Какой язык программирования самый надежный и долговечный?

Версия для печатиВерсия для печати

Какой язык программирования является самым надежным и долговечным? Это обсудили пользователи сайта Quora. Самые интересные ответы - в материале KV.by.

 

Ральф Левьен, уже давно занимаюсь разработкой открытых исходных текстов

Все языки программирования (как и все, что относится к компьютерной сфере) имеют свой срок годности, который у некоторых языков-долгожителей (отличным примером является COBOL) уже на исходе.

Многие отмечают в качестве долгожителя С, но я уверен, что в отношении устойчивости это не самый надежный язык. Идиоматическое программирование на С несколько десятилетий назад просто задействовало такие техники, как использование целочисленной арифметики в качестве модели 2^32 и ее реализация в согласии с этим условием.

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

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

Теперь о Go. В сравнении с прочими перечисленными языками, он довольно молод, он появился около 7 лет назад. Тем не менее, за это время он показал себя довольно надежным, а «Гарантия совместимости Go 1» заслуживает похвалы. Код Go, написанный после выхода 1.0 будет работать и сейчас. Go успешно противостоял давлению острой необходимости изменить саму природу языка. Непатентованные средства являются чем-то вроде общей шутки – многие сторонники языка программирования, имеющие академическое образование сказали бы, что они востребованы в любом «современном» языке, но их участие в Go было бы губительно для языка, так что, несмотря на критику, Go в них не нуждается.

Добавлю, что Go довольно надежен. Считается, что он хорош в вопросах защиты памяти, как и большинство других. Под этим я подразумеваю, что небрежно написанный код не может повредить память и спровоцировать непредвиденное поведение всей системы. Многие типы ошибок, конечно, все еще возможны, но система надежных, имеющих высокие показатели защиты памяти языки (такие как Go), дадут вам значительное преимущество.

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

Себастьян Мах, программирую, наслаждаюсь жизнью

Первый вопрос, на который вам нужно найти ответ: какого срока службы я жду от языка?

-10 лет: обратите внимание на языки программирования и объектные структуры, которые активно разрабатывались на протяжении последних 10 лет

-25 лет: обратите внимание на языки программирования и объектные структуры, которые активно разрабатывались на протяжении последних 25 лет

-…

Вы не найдете больше 2-3 объектных структур, которые активно разрабатывались 25 лет и более. По крайней мере не для ответа на ваш вопрос. Это приводит нас к неразрешимой проблеме: общей совокупности операционных систем, компиляторов, текущих языковых разработок, объектных структур и библиотек.

Так что наиболее адекватный, устойчивый и надежный подход: Чистый код. Делайте свой код простым, читаемым и понятным во всем. Каждая деталь вашей программы должна оставаться понятной при разъяснении на человеческом языке. Таким образом, в любой момент вы сможете адаптировать и перестроить программный код и/или переписать его.

 

Элусиан Моис, автор компьютерных языков 123 уровня

Мы определенно еще увидим новые версии Python или новый компилятор для него, но этот язык будут использовать лет 100.

Появятся другие языки, которые скопируют Python и будут более эффективными, но Python является интерпретатором и ему определенно стоит научиться.

Python и С++ идут рука об руку. Как только выучите Python – принимайтесь за С++. Эта комбинация не имеет себе равных и вы будете на высоте, как и все программисты-питонианцы.

Go во многом схож с Python, но он является компилятором. Его также можно освоить и наслаждаться работой.

Сейчас я работаю над новым языком Level Language, на который меня вдохновил Python.

Изучать язык ассемблера в качестве первого языка – это просто смешно. Можете его изучить, только если собираетесь помочь мне в разработке компилятора для моего Level language.

 

Пол Келли, технический архитектор системы, но когда-то работал настоящим разработчиком

По-моему, «всегда» - это дольше, чем какой-либо язык программирования может протянуть, но у COBOL есть все основания претендовать на это звание, так как он был разработан в 1959 и до сих пор используется. И не просто используется, а является основой многих очень важных систем. Каждый раз, когда вы снимаете деньги в банкомате или расплачиваетесь за покупку кредитной картой, скорее всего именно код COBOL отвечает за выполнение операции.

Это значит, что он также должен быть устойчивым и надежным.

Уверен, многие будут критиковать мой ответ и рассказывать о недостатках COBOL – и я также хорошо осведомлен о них, как и вы. Но факты говоря о том, что ему более 60 лет, он отвечает за функционирование мировой финансовой системы и продолжает внедряться на новых платформах. Добротно написанный код COBOL работает очень хорошо, и одной из причин его внедрения в сферу финансовых операций является то, что COBOL – один из немногих языков, обеспечивающих вычисления с 18 цифрами после запятой, что он делает исключительно интуитивно, чего, скажем, Java BigDecimal сделать не в состоянии.

COBOL не универсален, и никогда таковым не задумывался, но он определенно отвечает требованиям «устойчивости» и «надежности» и, как самый старый язык программирования высокого уровня (FORTRAN и LISP – единственные языки того времени, которые все еще используются), ближе, чем какой-либо из упомянутых языков к требованию «всегда».
 

Ричард Конто, программирую на нескольких языках, исправляю багги на многих

Всегда – значит ДОЛГО-ДОЛГО, так что я скажу, что такого языка нет (как нет ничего вечного в нашей жизни).

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

С – наиболее популярный из компилируемых языков программирования, чьи технические характеристики подчиняются международным стандартам. (ECMAscript/JavaScript – еще один язык, но он нацелен на работу в браузерах). Большинство других языков в той или иной мере имеют ограниченную сферу применения (даже те, которые используются для свободного программного обеспечения – их можно применять лишь с одной целью).

Любой скриптовый язык с портативным компилятором С и с устойчивыми интерпретаторами (никакие языковые свойства не добавляются) – следующий из самых удачных примеров. Даже при условии, что язык может применяться во многих сферах, важно быть осторожным и избегать типичных для конкретного интерпретатора черт. Навскидку к таким языкам относятся POSIX (Bourne) Shell (не BASH, а более простой Bourne Shell), один из языков LISP, FORTH и др.

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

При всем этом игнорируются вопросы, связанные со сторонними API, используемые программой при выполнении определенных задач. Сторонние API постепенно изменяются, но это не имеет значения до тех пор, пока программы (или другие API, апеллирующие к данному API) сохраняют свои характеристики.

 

Гарри Цитцельбергер

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

Анонимный пользователь

Вопрос о том, какой язык программирования самый устойчивый и надежный?

С не устойчив, так как претерпевает изменения на каждой платформе. Мы называем язык «С», но в действительности количество существующих языков программирования «С» равно количество платформ. Без единства устойчивость невозможна.

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

Антонио Бонифанти близок к истине. Я бы сказал, что функциональный язык Scheme является наиболее устойчивым и надежным, поскольку можно самостоятельно описать схему, тем самым достигнув устойчивости (оцените платформы, где работают Gambit, Bigloo, Chez и другие языки Scheme и вы будете поражены) и надежности (не приходится переживать насчет оборудования, как приходится, работая с С – в Scheme присутствуют крупные целые числа, одинаково работающие везде, и даже дополнения и прочие продвинутые свойства будут работать безошибочно на любой платформе.

На втором месте стоит Prolog, так как на Scheme невозможно с легкостью, но тривиально внедрить мини/микро Kanren и получить Prolog.

С даже не язык №1 и, как я уже доказал, он не является ни устойчивым, ни надежным. Но поскольку С имеет большое значение для программирования, его любят возносить на пьедестал. Он обычно используется на аппаратно программных интерфейсах, является лучшим для них? Что без труда возносит его на пьедестал. Но является ли он устойчивым и надежным? Я вас умоляю.

Разработка компилятора С очень утомительна, на нее нельзя положиться. Выучите Scheme, создайте свою модель и тогда вы получите языки, на которые сможете положиться: Scheme и Prolog.

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 3
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Читайте также

Комментарии

Аватар пользователя mike

Кол за статью. Потому что надоело БЕСПОЛЕЗНОЕ выкладывание жёваной резинки переводчиком, полагаю, далёким от разработок. Ради чего? Мнения спецов субъективны. Поддадут винца, а то и травки, и разглагольствуют.

Какие из языков самые долгоживущие? И ежу ясно -- Кобол, да Си. Кобол -- банковский язык, на нём состояние можно заработать. Си -- язык ни низкого, ни высокого уровня, это широкоуровневый язык, его низ -- почти Асм, а верх -- Фортран,  не меньше. Тот же Питон на Си написан. И ПиЭйчПи, и Руби, и ДжаваСкрипт. Джава-машины на Си пишутся, кстати. С многочисленными ассемблерными вставками. Почти все ОС на Си. Си -- король языков. Но анекдот состоит в том, что запросто можно быть программистом, не зная Си.

Какой из языков надёжнее? А в каком, блин, смысле? В отношении эксплойтоустойчивости результата трансляции? А почему не линковки? Или в устойчивости к дезассемблированию? Или по уловимости ошибок? Или по читаемости кода? Или по простоте профилирования? Или ... Много всяких "или". Определиться бы надо. Но кого это колышет? Меня -- нет. :)

+3

Согласен. В научной среде еще активно используется Fortran, хотя бы "за кулисами" в виде библиотек.

+1
Аватар пользователя Dmitry

Ради чего?

для поисковиков (у меня тоже есть такие софтовые новости, не бесполезные конечно, "чтобы было").

+1

Вот вот Фортран и Си живее всех живых.

А виртуалки с бережно скопированной средой 70-х и Коболом местами вполне себе используются.

Да что там - показывали как механический табулятор в конторке используют.

+1

Добавить комментарий