Подтвердить что ты не робот

Какие языки программирования и языковые функции меньше 10?

Кажется, что существует много "новых" языков, но на самом деле кажется, что большинство популярных, не экспериментальных, уже находятся в подростковом возрасте, а истинный мейнстрим старше, чем большинство младших программистов. Теперь я просто вспомнил этот очевидный факт, когда понял, что даже "хип-рубинский язык" - 15 в этом месяце (февраль 1994 года). В то время как такие вещи, как Haskell, что в каждом "узнать" список даже старше, чем это.

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

Итак, мне интересно, какие новые языки и их соответствующие новые функции/идеи находятся под 10 сейчас? Что-нибудь, что может быть большим через 10 лет? Любые новые возможности языка, на которые можно рассчитывать? Или мы уже сделали?


По-видимому, нет ничего действительно нового, что не является гибридом или утонченностью. Возможно, LOLCODE, потому что он был абсурдным, прежде всего, но даже такие вещи, как Brainf * ck и WhiteSpace, в основном представляют собой древние сборные языки на основе стека.

Достигли ли мы энциклопедическую эру языков программирования?

4b9b3361

Ответ 1

Нет, что я видел.

Конечно, появляются "новые" языки все время. Но я использовал кавычки, потому что все предлагаемые примеры:

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

Для конкретных примеров:

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

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

Ответ 2

Wikipedia имеет приятную временную шкалу о первом появлении языков программирования - это показывает, что существует несколько языков, a href= "http://en.wikipedia.org/wiki/Timeline_of_programming_languages#2000s" rel= "noreferrer" > 2000++, хотя я считаю, что это не широко используемые языки (пока?).

Ответ 3

Язык программирования D составляет менее 10 лет. Его уникальные функции включают транзитивный const (все, что доступно из const-объекта, также const), компиляция оценки функции времени и возможность комментировать функции как чистые и статически проверять их компилятором на наличие побочных эффектов вне функции. Также включена система шаблонов, которая ставит под угрозу создание шаблонов С++, генераторов Java/С# и т.д.

  • Шаблоны Variadic, которые "просто работают" для неограниченного количества аргументов.
  • Строки, числа с плавающей запятой и псевдонимы функций могут быть параметрами шаблона.
  • Оператор static if, аналогичный тому, что существует на бумаге в С++ 0x, фактически реализуется и работает.
  • String и шаблонные микшины, которые позволяют вводить произвольный параметризованный шаблонный код в любом месте вашего источника и для произвольного генерации кода компиляции. В крайнем случае, это было использовано Дон Клугстоном для создания математической математической библиотеки, которая фактически анализировала код, заданный как строковые литералы во время компиляции, и генерировала оптимальный встроенный ассемблерный код для этих операций до этапа генерации кода компилятора.
  • Структуры могут быть представлены в виде кортежей, что позволяет итерации по их полям. Это позволяет использовать некоторое интересное общее программирование с помощью структур.
  • Смехотворно мощное отражение/интроспекция времени компиляции. Я как-то написал шаблон функции, который мог бы глубоко скопировать любую структуру, если бы не были задействованы объекты полиморфного класса времени выполнения (которые не компилируют отражение времени не могут). Это было сделано, используя только отражение времени компиляции. Не использовалась информация типа времени выполнения.

Ответ 4

Языки развиваются. Вам необязательно нужен новый язык для получения новый язык. Например, Haskell не является новым языком, но он имеет много "новых" функций, включая STM.

Ответ 5

OMeta составляет менее 2 лет и является языком для создания других языков. По-моему, это более выразительно, чем такие языки, как Microsoft предстоящий MGrammar.

Самая крутая идея заключается в том, что вы можете создавать языки объектно-ориентированным способом (например, вы могли бы создать язык mashup для Ruby и С# grammars).

Также приятно, что синтаксис выглядит почти идентично BNF и, следовательно, вполне читаем.

Я написал об этом больше здесь.

Ответ 6

Я не думаю, что недавняя инновация изобретала новые функции. Он делал старые идеи доступными (и практичными) в основных настройках. Лямбда-выражения - отличный пример этого - старого, как холмы, но подавляющее большинство разработчиков не столкнулись с ними до С# 3 и VB9.

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

Является ли природа генериков .NET "новым", кстати? Я не знаю достаточной вычислительной истории, но есть явные различия между ней и генериками Java (с стиранием типа) или шаблонами С++ (где специализация действительно является бизнесом во время компиляции, насколько я могу судить, требуя источник для шаблона).

Ответ 7

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

Если бы вы задали этот вопрос около 20 лет назад, когда OO была одной из "больших новых вещей" с С++ и Smalltalk, а еще чего-то, люди могли просто ответить, что это была Simula (1967), переупакована. Но в 1970 году я не думаю, что кто-то считал бы объекты "большой инновацией", скорее, они просто были бы "интересной синтаксической тонкостью" на этом языке Simula. Со временем OO эволюционировала, люди узнали, как OO является естественным для систем моделирования/структурирования, были найдены шаблоны проектирования,... и теперь сегодня многие языки просто принимают OO "как должное". Но трудно найти какой-то момент времени, когда люди скажут: "OO - отличная новая инновация", потому что, когда она была новой, никто не оценил ее влияние на область разработки программного обеспечения, и к тому времени, когда ее охват был очевидным, больше не было новым.

Через 20 лет, возможно, у всех новых/популярных языков будет функция типа "классов классов" с сегодняшнего дня Haskell (это функция убийцы), но она уже "слишком стареет" по этим критериям вопроса, чтобы стать нововведением, даже если это может быть "следующая большая вещь".

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

Ответ 8

Как насчет F #:). В разработке также есть множество новых языков, созданных сольными разработчиками. Как scala, jruby, groovy, boo и т.д.

Для того, чтобы язык, на котором можно ловить, действительно нуждался в большой поддержке крупной компании, поэтому мы будем зависеть от того, что мы получили на некоторое время. Хотя Sun и MS вкладывают значительные средства в создание своих платформ (JVM, CLR) более открытыми для этих языков. По умолчанию будут использоваться Java и С#, но можно сказать только время.

Ответ 9

Scala язык программирования составляет менее 10 лет (я считаю, что он был первоначально выпущен в 2001 году) и может быть заявлен как первое:

  • Масштабируемый язык реального мира (например, от скриптов и имплицитов к субъектам и модулям). Я говорю о реальном мире, потому что некоторые будут требовать других, начиная с Lisp, сначала здесь, но я считаю, что Scala совместимость с Java, объектно-ориентированные функции, система типов и т.д. Делают ее другой.
  • Реальное слияние функционального и объектно-ориентированного программирования (например, с функциями более высокого порядка, но также с использованием состояния и статической типизации). Я снова говорю о реальном мире, потому что, например, Oz старше, я полагаю, что Scala совместимость и прагматизм имеют значение

Ответ 10

очень с нетерпением ждем Boo.

Boo - объектно-ориентированный, статически типизированный язык программирования в активной разработке с 2003 года, который стремится использовать поддержку Common Language Infrastructure для Unicode, интернационализации и веб-приложений при использовании синтаксиса под названием Python 1 и особое внимание уделяется расширению языка и компилятора. Некоторые особенности примечания включают вывод типа, генераторы, мультиметоды, необязательную утиную печать, макросы, истинные замыкания, currying и первоклассные функции.

Ответ 11

Множество "новых" языков предназначено для одной или другой виртуальной машины на месте, а именно JVM или CLR. Это позволяет сконцентрироваться на разработке синтаксиса и "философии" больше, чем на реализации (используя существующие оптимизированные виртуальные машины, GC, библиотеки и т.д.).

Интересно, что некоторые языки ориентированы на обе платформы, такие как Язык программирования вентилятора.

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

Я нашел haXe интересным, потому что он нацелен на несколько языков /VM: JavaScript, Flash, NekoVM или даже PHP.

Как говорили другие, сегодня трудно найти действительно новые концепции. Отчасти потому, что многое уже было исследовано, отчасти потому, что многие программисты ленивы и сбиты с толку, если новый язык не использует знакомый синтаксис (я видел много жалоб людей в списке рассылки Lua, запрашивая использование {и} вместо do/end - см. также жалобы на JavaFX, не являющиеся Java...), не говоря уже о новой концепции!

Ответ 12

Хорошо, мы знаем Кодовые контракты с Eiffel - так что 20 лет и Code Analysis в течение многих лет и лет, но я никогда не видел такой полной комбинации Code Contracts, Code Analysis и Unit Testing, как в С# 4.0 и Pex, Возможно, я ошибаюсь и не осведомлен о других языках и продуктах, которые предлагали этот уровень функциональности много лет назад, но я, безусловно, назвал бы эту степень помощи программному обеспечению "bugfree". Итак, это ново?

Ответ 13

Язык AgentSpeak (L) для программирования интеллектуальных агентов. Он основан на Prolog (который очень старый), но есть некоторые очень специфические функции, и он совершенно новый.

Вы можете проверить полностью интерпретатор Jason.

Ответ 14

Powershell как язык под 10, конечно, не языковые особенности.

Ответ 15

язык E сделал доступную легкую надежную конвейерную обработку. Это должно стать решающей идеей для предстоящей многоядерной революции, поскольку она позволяет писать код, который легко распараллеливается, имеет низкозатратные зависимости между передачей подпроцессов и уклоняется от всех стандартных проблем с управлением блокировками и предотвращением взаимоблокировки, Основные идеи в E были портированы на другие языки. E является частью длинной (хотя и несколько неясной) линии языков возможностей объектов, которая имеет очень важный вклад в обеспечение надежности и безопасности программного обеспечения. Е сейчас всего около 10 лет.

Ответ 16

Синий язык программирования показывает большой потенциал. Подумайте "Python, но проще в использовании и расширении".

Нет, я не говорю, что Blue лучше, чем Python, я просто говорю, что его пивоваренный, простой в использовании и (уже через пару лет) довольно стабильный. Его выращивали на мне около года:)

Ответ 17

Я бы сказал, что последние добавления С#, такие как LINQ, методы расширения, лямбда-выражения и остальные, являются относительно новыми. Если они сейчас не большие, они будут.

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