Где/Когда С# и .NET Framework не могут быть правильным инструментом?

В моей жизни, не связанной с программированием, я всегда стараюсь использовать соответствующий инструмент для работы, и я чувствую, что я делаю то же самое в своей жизни программирования, но я считаю, что я выбираю С# и .NET для почти всего. Мне трудно найти (реалистичный бизнес) потребности, которые не могут быть удовлетворены .NET и С#.

Очевидно, что встроенные системы могут требовать что-то менее раздутое, чем .NET Micro Framework, но я действительно ищу ситуацию типа бизнес-типа, где .NET не лучший инструмент.

Я прежде всего С# и .NET парень с тех пор, как я самый удобный, но я знаю довольно много C + +, php, VB, PowerShell, пакетных файлов и Java, а также разбираюсь в веб-технологиях (JavaScript, HTML и CSS). Но я открыт для этого своим набором навыков, и я ищу случаи, когда С# и .NET не являются правильным инструментом для задания.

Я выбираю .NET и С#, потому что мне это нравится, но я ищу случаи, когда это не подходит.

Ответ 1

С# и .NET Framework не могут быть лучшим выбором для жесткого приложения реального времени. Ваше приложение будет входить в первую сборку мусора, а системы реального времени часто имеют ограничения памяти, которые делают полномасштабную платформу .NET непригодной.

Тем не менее, есть способы обойти эти проблемы, см. здесь: http://www.windowsfordevices.com/c/a/Windows-For-Devices-Articles/Adding-Realtime-to-Windows-Embedded/

Ответ 2

С# не может быть хорошим выбором для сложных алгоритмов, особенно тех из них, которые получают выгоду от parallelism, что было бы лучше выражено с использованием функционального языка, такого как F #.

Смотрите: https://stackoverflow.com/questions/141985/why-should-a-net-developer-learn-f

Ответ 3

На самом деле не так много различий между проблемными доменами, обслуживаемыми разными языками программирования. Скорее, выбор обычно сводится к

  • На каких языках вы/ваша команда уже знаете, что вы можете быть продуктивными?
  • Что доступно в библиотеках (встроенных или доступных из других источников) для языка?

Поэтому ответ на этот вопрос будет зависеть от вас. Например, если бы я лично выполнял задачу быстрой обработки текста, я бы взломал ее в Perl, потому что я хорошо знаю Perl и могу эффективно выполнять такую ​​задачу: если вы попросили меня сделать это на С#, я бы сказал, что был неправильным инструментом для меня, потому что я могу сделать это быстрее на Perl.

Если вы хотите изучать и диверсифицировать свой инструментарий программирования - это хорошая идея, то вместо того, чтобы спрашивать, где С# является неправильным инструментом, вам нужно спросить, какой язык наиболее подходит для каждой задачи, и сделать чтобы лучше понять этот язык. В противном случае С# всегда будет лучшим инструментом для всех заданий для вас.

Ответ 4

вы задали интересный вопрос.

Я буду перефразировать его: почему объектно-ориентированный? И почему .NET? А когда нет?

Я полагаю, что нужно иметь в виду, почему OO так популярен. В современном мире большая часть спроса на программы по существу для бизнеса. Вот почему объектно-ориентированные парадигмы настолько популярны; это часто самый простой способ превратить деловую проблему в программу. Вы в основном смотрите на бизнес, разбиваете, какие взаимодействующие части (люди, машины, места и т.д.), И пишите что-то, что имитирует его в коде. Таким образом, OO популярен, потому что он позволяет вам имитировать многие ситуации в реальном мире.

.NET Я подозреваю, что он популярен, потому что он кажется настолько всеобъемлющим. Вы получаете множество компонентов с ним, и все, что вы действительно делаете, имитирует бизнес-проблему, написав некоторую соединительную ткань между этими компонентами. Добавьте к этому тот факт, что там огромное сообщество людей, использующих его уже, и сетевой эффект говорит в пользу .NET.

Наконец, когда вы НЕ используете .NET?

Если ваша проблема не является проблемой для бизнеса, т.е. это не просто проблема подключения некоторых готовых компонентов, вам может понадобиться что-то другое. Например, если вы пишете драйвер для нового оборудования, этот драйвер действительно является слоем ниже бизнес-уровня, потому что

1) Он должен работать независимо от того, какой состав компонентов используется для 2) Деловому слою все равно, как это работает.

Там много проблем с программированием, где вы не будете использовать модель OO, но я подозреваю, что OO полезно, потому что он соединяет все части (которые не являются OO, например, базами данных и драйверами) для создания целого.

Ответ 5

Я бы не использовал С# для приложения, которое сильно использует ресурсы и нуждается в близком доступе к аппаратным средствам, то есть к компьютерным играм высокого профиля.

Приложения реального времени (скажем, какое-то приложение, которое контролирует температуру на атомной электростанции, если, конечно, Гомер симпсон в runnig это), но не игры.

Интерактивные игры мирового класса, IA. Интенсивные игры - лучший сервер на С++ (в ядре), потому что вам нужно быть ближе к процедурной парадигме и аппаратным средствам, и вам нужно сказать компьютеру, что делать и как для этого, без чего-либо посередине (CLR)

Ответ 6

С# и .NET не являются правильным решением, если вы работаете в гетерогенной среде со многими платформами. Для всех практических целей .NET - это решение только для Microsoft (да, я знаю, что Mono и я поддерживаю мой оператор), который блокирует вас для одной вендорской и аппаратной архитектуры. Если на вашем рабочем месте есть компьютеры Mac и Linux, а также серверы SPARC и blade-серверы PowerPC и т.д. И т.д., Тогда С#/.NET не принесет вам много пользы.

У вас также возникла проблема блокировки поставщика. Скажем, вы пишете серверное приложение на С# и .NET. Теперь скажем, что ARM недавно набег на серверные компоненты, и ARM-оборудованный серверный комплект попадает на рынок, как молния. Если вы используете С#/.NET для своего приложения, вы будете закрыты до тех пор, пока Microsoft не портирует свои материалы на архитектуру на основе ARM (если когда-либо - NT однажды поддерживал многие другие архитектуры, чем сейчас: тенденция к сокращению экосистемы Windows, не расширяя его). Заблокировав себя одной технологией, зависящей от конкретного поставщика, вы сделали себя менее способным пережить рыночные сдвиги.

Ответ 7

Они перемещают парадигму программирования от небольших инструментов взаимодействия к крупным монолитным приложениям из-за того, что их время загрузки минимальные наборы множеств и взаимодействия с файловая система намного выше, чем на языках, скомпилированных на языке компиляции.

Это не всегда плохо, но это означает, что очень эффективная (хотя и высокая кривая обучения) модель программирования на основе командной строки - a la UNIX - становится менее используемой, что является позором, на мой взгляд.

Ответ 8

Лондонская фондовая биржа изначально была написана на .NET. http://blogs.computerworld.com/london_stock_exchange_suffers_net_crash

Вы можете получить некоторые проницательные сведения о том, почему использование .NET и любых не детерминированных приложений для выпуска памяти (например, сборка мусора), тем не менее, делает такие вещи, как системы реального времени, не поддающиеся обработке в .NET, см. в следующей ссылке. Юмор - бонус http://tech.slashdot.org/tech/08/09/08/185238.shtml

И они канавы .NET, и выбирает MilleniumIT, который использует С++ http://linux.slashdot.org/story/09/10/06/1742203/London-Stock-Exchange-Rejects-NET-For-Open-Source?from=rss

Для чего угодно, как объемные транзакции и жизненный цикл (встроенное устройство для автомобильного двигателя), вы не можете просто удалять сборку мусора случайно и постоянно

[EDIT]

Почему в downvote есть какие-то Microsoft shills здесь? Я просто говорю в общих терминах, в которых была построена базовая парадигма .NET(собранные и собранные мусором). Возможно, если я просто скажу, что единственные экземпляры, где .NET не должны использоваться, - это автомобильные двигатели и машины, которые подключены к людям (например, кардиостимулятор сердца, машина для диализа), я бы не потерял ни слова

Ответ 9

Недавно я смотрел презентацию InfoQ, где Neil Ford представляет проект Thoughtworks, который выбрал Ruby on Rails поверх .NET из-за предполагаемого лучшая гибкость Rails и Ruby. Взгляните на них по теме.