Я прочитал несколько статей в Интернете о выборе языка программирования на предприятии. В последнее время популярными стали многие языки с динамической типизацией, например, Ruby, Python, PHP и Erlang. Но многие предприятия все еще используют статические типизированные языки, такие как C, C ++, C # и Java.
И да, одно из преимуществ статических типизированных языков заключается в том, что ошибки программирования обнаруживаются раньше, во время компиляции, а не во время выполнения. Но есть и преимущества с динамически типизированными языками. ( подробнее в Википедии )
Основной причиной того, что предприятия не начинают использовать такие языки, как Erlang, Ruby и Python, является тот факт, что они динамически типизированы. Это также, кажется, главная причина, по которой люди в StackOverflow выбирают Эрланга. Посмотрите, почему вы решили "против" Эрланга .
Тем не менее, кажется , есть сильная критика динамической типизации на предприятиях, но я действительно не понимаю , почему это , что сильный.
Действительно, почему на предприятиях так много критики в отношении динамического набора текста? Это действительно сильно влияет на стоимость проектов или как? Но, возможно, я ошибаюсь.
dynamic
и начинаете использовать это. Это не более многословно, чем обычные вызовы методов или перегрузки операторов.Ответы:
Да, я верю, что они делают.
Есть несколько причин, которые необходимо учитывать при выборе языка для нового проекта:
while(1)
....Если вы можете предположить, что в организации, с которой вы работаете, есть принцип «Движение вперед» (для этого есть учетный термин), и вы не просто случайно решите не работать с программным обеспечением, тогда у вас будет гораздо лучший повод для используя программное обеспечение. Так как крупный бизнес не продает (подразумевает ответственность за его поддержку) Python / Perl / $ dynamic_language, это значительно снижает риск.
По моему опыту, разработчики ПО с открытым исходным кодом часто сталкиваются с проблемой полной ответственности за исправления ошибок и выпуска обновлений. "Это бесплатно, вы работаете над этим!" это не ответ , который является приемлемым для большинства предприятий (не их основные compentencies, между прочим).
Конечно, я не говорю о мире веб-приложений / стартапов, который имеет тенденцию играть по правилам высокого риска / высокого вознаграждения и быть очень открытым, чтобы оставаться на острие технологий.
источник
Вы даете слишком много технической поддержки лицам, принимающим решения Enterprise. Существует старая поговорка: «Никто не был уволен за покупку IBM». Если вы идете другим путем, и все становится непросто (они всегда так делают), никто не хочет рисковать быть обвиненным. Придерживайтесь стандартов и обвиняйте кого-то еще.
Есть много молодых компаний, которые в конечном итоге станут предприятиями завтрашнего дня и будут использовать эти языки.
И давайте не будем забывать о миллиардных строках кода, написанных на VBA!
источник
Причина, по которой предприятия используют C, C ++, C # и Java, не в том, что они статически типизированы (по крайней мере, не напрямую). Я уверяю вас, что лица, принимающие решения на предприятии, не делают такой выбор на основе объективного сравнения систем типов.
Компании делают заботу о:
Лично я думаю, что если вы хотите использовать динамические языки в Enterprise, то ваш лучший шанс на данный момент - использовать что-то, что поддерживает существующую корпоративную экосистему. Наиболее заметными являются новые динамические языки JVM: например, JRuby, Groovy, Clojure. Что касается управления ИТ, то это «безопасный» выбор динамического языка, потому что они работают внутри и хорошо взаимодействуют с остальной частью корпоративной экосистемы Java.
источник
Я думаю, что это только их основное оправдание. Настоящая причина в том, что компании не воспринимают их всерьез и не считают, что они слишком любительские. Java и .NET являются «крупными бизнес-именами», имеют хороший коммерческий маркетинг, коммерческую поддержку клиентов, и поэтому к ним очень серьезно относятся.
К сожалению, практически нет языка со статической типизацией, который был бы столь же популярен, как имена крупных компаний. Почему среды программирования с открытым исходным кодом / свободные программы почти всегда динамически типизированы? Это может указывать на то, что язык со статической типизацией на самом деле не так прост в создании, а динамическая типизация - это «хак для ленивых» Если это так, то компании, которые выбирают языки с динамической типизацией, могут иметь смысл.
источник
РЕДАКТИРОВАТЬ: я должен отметить, что мой основной язык программирования в настоящее время Python, который динамически типизируется. Лично мне нравится свобода, заключающаяся в том, что нет необходимости предварительно объявлять переменные, но иногда было бы неплохо указать (например), какие параметры принимает функция, чтобы отлавливать ошибки раньше, чем поздно.
источник
Динамически типизированные языки воспринимаются (некоторыми программистами / боссами) для создания кода, который также не работает. Тот факт, что динамически типизированная программа компилирует, очень мало говорит о ее правильности. Тот факт, что статически типизированный язык компилируется, говорит вам намного больше. (С другой стороны, между компиляциями все еще есть большой путь, и он поступает правильно, так что это может быть менее значимым, чем кажется)
Динамически типизированные языки воспринимаются как языки сценариев. Вы никогда бы не написали приложение на bash или в командном файле. Все динамически типизированные языки, как правило, попадают в эту категорию (несправедливо).
Динамически типизированные языки медленнее, чем статически типизированные. (Но мы увидим, насколько хорошо работает работа над JIT)
источник
Примечание: это в основном субъективно и основано на моем опыте и впечатлениях.
Динамически типизированные языки сильно отличаются от статически типизированных языков. Эти различия, вероятно, становятся более важными в тяжелом корпоративном программном обеспечении, чем в большинстве других приложений.
Статически типизированные языки имеют тенденцию быть очень предписывающими. Метод будет принимать только те данные, которые точно соответствуют его сигнатуре. Уровни доступа имеют тенденцию быть очень важными, и интерфейсы определяются явно, с подробными, но недвусмысленными ограничениями для обеспечения соблюдения этих определений.
Динамически типизированные языки, с другой стороны, очень прагматичны. Преобразования типов часто происходят неявно, функции могут даже совпадать, если вы введете неправильный тип ввода, если он ведет себя достаточно схожим образом. В таких языках, как Python, даже уровни доступа будут основаны на контракте, а не на технических ограничениях (т. Е. Это только
private
потому, что вам сказали не использовать его, и у него забавное название).Многие программисты предпочитают динамические языки, потому что они (возможно) позволяют быстрое создание прототипов. Код часто оказывается короче (хотя бы из-за отсутствия объявлений типов), и если вы хотите нарушить надлежащий протокол, потому что вам нужно быстрое и грязное решение или вы хотите что-то протестировать, это легко возможно.
Теперь причина того, что «корпоративные» компании часто предпочитают статически типизированные языки, заключается именно в том, что они более ограничительны и более явны в отношении этих ограничений. Хотя на практике даже статически типизированный код может быть взломан идиотами с помощью компилятора, многие проблемы будут гораздо более заметны гораздо раньше в процессе (т. Е. До выполнения). Это означает, что даже если кодовая база большая, монолитная и сложная, многие ошибки могут быть легко обнаружены без необходимости запуска кода или его передачи в отдел контроля качества.
Причина, по которой это преимущество не перевешивает недостатки для многих программистов за пределами этой среды, заключается в том, что эти ошибки часто легко обнаруживаются при тщательной проверке кода или даже при попытке его запустить. Особенно при следовании методологии, основанной на тестировании, эти ошибки часто становятся тривиальными, и их легко исправить. Кроме того, поскольку многие такие компании имеют гораздо более короткий цикл выпуска, производительность зачастую важнее, чем жесткость, и сами разработчики проводят большое (базовое) тестирование.
Другой причиной того, что корпоративные корпорации не используют динамически типизированные языки, является устаревший код. Как бы глупо это ни казалось нам, ботаники, крупные корпорации часто будут придерживаться решений, которые работают, даже если они уже давно истекли. Вот почему так много крупных компаний используют Internet Explorer 6 и так медленно обновляют свои операционные системы. Именно поэтому они часто пишут новый код на «старых» языках (например, древние версии Java): гораздо проще добавить несколько строк кода в неживую часть программного обеспечения, чем получить разрешение на полное переписывание в новом язык.
tl; dr: статические языки больше похожи на бюрократию, поэтому руководителям предприятий они нравятся больше.
источник
+
берет числа и добавляет их, если вы хотите использовать объединение.
; в JS обе операции используют один и тот же оператор - если вы не знаете, как будут вести себя ваши значения, вы должны явно их преобразовать. Конечно, это также связано с произвольной типизацией и строгой типизацией (Python еще строже), но в основном вы должны либо убедиться, что ваши значения имеют правильный тип, либо заставить ваши операции обеспечивать ожидаемые типы.Нет, я не думаю, что динамически типизированные языки заслуживают всей критики. (Или, если хотите, они заслуживают столько же критики, как и статически типизированные языки.)
По моему опыту (и я не пытаюсь обобщить это утверждение), программисты, которые критикуют динамические языки, не использовали их. Разговор обычно идет "но при статической типизации компилятор ловит так много ошибок!" и я говорю "ну, это не проблема, по моему опыту". (Обычно другие программисты из Java, Delphi или аналогичного уровня; я не знаю программистов на Haskell или ML.)
Единственное, что меня действительно волнует, - это когда кто-то заявляет, что метод Foo не может быть выполнен (или может быть очень сложным) на языке с динамической типизацией ... когда эта методика была изобретена динамически типизированной и для нее язык. Иды? Болтовня. Автоматический рефакторинг? Болтовня. Вызывающие-о / реализаторы-о? Болтовня.
источник
Предприятия просто недостаточно быстро внедряют новые языки и инструменты, и для этого есть веские причины. Но когда один из основных инструментов, таких как C #, реализует некоторые из этих функций, они попадут в основные предприятия ....
источник