Выбираем правильный язык для работы:выход из C#

StackOverflow https://stackoverflow.com/questions/103174

  •  01-07-2019
  •  | 
  •  

Вопрос

Я работаю в среде Microsoft, поэтому могу забить молотком C# любые гвозди, которые попадутся мне на пути.При этом какие языки (компилируемые, интерпретируемые, скриптовые, функциональные, любые типы!) дополняют знание C# и для каких целей?Например, я перенес большую часть функций сценариев из скомпилированных консольных приложений в сценарии Powershell.Если вы разработчик MS, нашли ли вы в своем мире нишу для других языков, таких как F#, IronRuby, IronPython или чего-то подобного, и какую нишу они занимают?

Примечание:этот вопрос адресован разработчикам Microsoft, поскольку я не могу сбежать и начать устанавливать стеки LAMP в своей компании и, следовательно, вынужден поддерживать их вечно.:) Однако не стесняйтесь упоминать любые другие языки, которые вам интересны для выполнения определенной задачи/роли в вашем мире, помимо вашего основного языка.

Это было полезно?

Решение

Python/Perl/Ruby/PowerShell — отличные дополнения к C#/VB.NET.Если ваш начальник передает вам текстовый файл и говорит один или два раза вставить его в базу данных, то для этого подойдет любой из Perl/Python/Ruby (я не уверен насчет PowerShell, но думаю, что это не намного сложнее). разобрать его.В любом случае, для ваших основных приложений вы, вероятно, застрянете на C#.Вы можете использовать один из наиболее динамичных языков для генерации кода на C#.

Поскольку вы находитесь в среде Microsoft, вероятно, лучший шанс добиться принятия вашего решения — это PowerShell.Рядом с этим я бы сказал IronPython или что-то еще, интегрируемое с CLR.Но главная проблема заключается в том, что для того, чтобы кто-то другой мог поддерживать то, что вы делаете, он должен знать, какой язык вы используете.В будущем MS планирует гораздо чаще использовать PowerShell, поэтому, вероятно, проще обосновать PowerShell, чем, скажем, Python/Perl/Ruby.

Если вы просто обрабатываете текстовый файл для одноразового использования.Или создать генератор одноразового кода для генерации всего кода, а затем намереваться поддерживать сгенерированный код, тогда это не имеет значения.Вы тот, кто будет использовать результаты, и если вы сэкономите время, используя Perl, вы получите больше возможностей.Но если вы делаете что-то, что будет использоваться снова и снова (например, генератор активного кода, где вы меняете шаблоны и запускаете генератор вместо того, чтобы поддерживать сгенерированный код), тогда другим разработчикам, работающим над тем, что вы сделали, необходимо будет знать язык. ты использовал.Гораздо сложнее спорить об изучении Perl/Ruby/Python в магазине Microsoft.Но PowerShell кажется более простым аргументом.Я думаю, что главный план MS состоит в том, чтобы в конечном итоге приложения предоставили больше возможностей для Power Shell через командлеты.Если предположить, что это произойдет, то PowerShell станет еще более простой задачей, поскольку он предоставит массу скриптовых функций, которые вы не получите другим способом.

Другие советы

Хороший язык сценариев — всегда хороший инструмент, который нужно иметь под рукой.Видеть Рубин, или Питон.

Я использую Python для прототипирования, так как между редактированием и фактическим запуском новой версии кода практически нет времени.Возможно, я даже буду использовать его для реального проекта — чем больше я его использую, тем больше он мне нравится.

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

Поскольку вы находитесь в магазине MS, я бы посоветовал PowerShell как достойный язык сценариев для изучения.Он хорошо работает с C#.Я тоже большой поклонник Руби.

Я бы хотел второй или третий питон.В частности, IronPython (ttp://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython) позволяет вам изучать Python, но также дает вам доступ к полезным функциям .net framework.

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

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

Может быть, поиграем с Бу и посмотрим, что ты думаешь.
Бу на Codehaus.org
Бу в Википедии

Если вы используете платформу .Net, язык на самом деле не важен, поскольку компилятор и интерпретатор в любом случае создают один и тот же IL-код.

Если вы отойдете от мира .Net, я считаю, что инструменты и языки разработки — это набор инструментов.Я стараюсь использовать правильные инструменты для текущей работы, принимая во внимание квалификацию других разработчиков и, конечно же, какое направление ищет компания (я консультант).

Я с Джингуем.Попробуйте один из языков сценариев.Плюс в качестве бонуса, когда вы изучаете Ruby/PythonPearl и т. д., это открывает путь к разработке языка для других сред.

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

Как веб-разработчик по профессии, вы можете обратить внимание на семейство XSLT/XPath, поскольку для определенных типов обработки XML они могут оказаться очень мощными инструментами.

Конечно, в C# 3.x Linq2Xml предоставляет некоторые встроенные аналогичные функции.

Однако XSLT может стать мощным способом отделения данных от представления в ваших приложениях.

Меня очень интересует F# и некоторые другие новые языки CLR/DLR.Языки DLR могут быть намного лучше для вашего пользовательского интерфейса, потому что они не заставляют вас произносить много глупостей.

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

Обратите внимание на Boo — он работает поверх стека .NET, но его синтаксис больше похож на Python.

Чтобы изучить новый язык, дополняющий C#, я бы выбрал C++.Вы можете использовать его в стиле «намного лучше, чем p/invoke», чтобы получить доступ к неуправляемому коду из ваших приложений C#.Затем вы можете начать использовать его для написания приложений с ограниченным объемом памяти и/или битов, критичных к производительности, если вы обнаружите, что некоторые из ваших .NET-приложений начинают загружать всю оперативную память и/или процессор или просто не так быстры, как Ты бы хотел.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top