Были ли исследования в области лингвистики программирования?

18

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

В то время как развитие языков программирования является искусственным, естественно-языковые процессы эволюции, заимствования, смешивания и мутации имеют достаточно четкие искусственные аналоги. Поэтому я задаюсь вопросом: проводились ли когда-либо масштабные и глубокие исследования эволюции и поведения языков программирования с точки зрения лингвиста  ?

Джон Перди
источник
6
Perl был создан лингвистом, и он более грязный, чем сам английский язык.
Работа
1
@Job: И он существует уже более 23 лет, по умолчанию устанавливается на бесчисленное множество Unix-подобных платформ и по-прежнему регулярно используется для всего: от автоматизации (для которой он намного чище сценариев оболочки) до веб-разработки (для которой это путь более чистым, чем PHP) для первоначальной цели обработки текста с помощью регулярных выражений (для которых он установил фактический промышленный стандарт). Конечно, это грязно, но таким образом, что это хорошо работает для людей, и именно здесь в развитии Perl лингвистический опыт Ларри был благом.
Джон Пурди
@ Job эффект называется «Хуже лучше» en.wikipedia.org/wiki/Worse_is_better .
Апалала
@ Аплала: Это не связано. Во всяком случае, Perl контрпример, потому что это навороченный и сложными и популярной.
Джон Перди

Ответы:

6

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

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

Разговорные языки развиваются с любой скоростью, в зависимости от контекста, и это происходит непредсказуемым образом, как непредсказуемый человеческий контекст. Результаты Второй мировой войны оказали огромное влияние на японский язык. Британцы, австралийцы, южноафриканцы и жители Северной Америки не совсем говорят на одном языке. Использование склонений глаголов среди испанских колоний стало совершенно другим после двухсот лет независимости (бывшие колонии считают, что испанский язык Испании архаичен ).

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

Естественные языки с их вариациями, нюансами и эволюцией не подходят для детерминизма, который мы требуем от компьютеров. (Ну и дела! Учитывая общность неправильных интерпретаций и вторых интерпретаций, кажется, что они не годятся даже для самых простых взаимодействий между людьми [воздерживаются от цитирования шуток о том, что говорит девушка / парень-друг и что это на самом деле означает])

апалала
источник
В нашем исследовании (у меня был репетитор) мы смотрели на греческий и латынь, потому что у них были четко определенные грамматики, которые хорошо охватывали каждую роль, которую слово могло иметь в предложении по их склонению. Это было недостаточно хорошо, и записи того, как люди на самом деле говорили на этих языках, говорят, что это сильно отличалось от того, что указывали их грамматики, как это происходит с современными языками.
Апалала
4
Что касается древнегреческого и латыни, то здесь проблема в том, что сохранившиеся тексты, как правило, носят формальный характер - эссе, контракты, юридические постановления и т. Д. Если вы думаете о сообщениях, которые мы посылаем изо дня в день: «Привет, дорогая, пожалуйста молоко по дороге домой »и« Джим - вспомни отчет Кейси за 9 часов »- большинство из этих преходящих сообщений в древнем Риме будут потеряны навсегда.
ХорусКол
2
Это не совсем так. Моя мама иногда рассказывает о своих уроках латыни в средней школе и упоминает одну часть, которую они перевели, записку от римского патриция к его водителю колесницы. Суть была в том, что «Пожалуйста, в час пик, не попадитесь за такую ​​колесницу. Я не знаю, чем он кормит своих лошадей, но вонь ужасна».
Джон Р. Стром
4

Я перечитал вопрос, и я думаю, что мой первоначальный ответ не касался этого. Вот еще одна попытка.

Нет, я не знал ни о каком серьезном исследовании лингвистики языка программирования. Были прослежены языковые линии для двух основных ветвей и подотрасли:

  • Procedimental. Фон Нейман . Дейкстра . Фортран, Паскаль, C.
    • Объектно-ориентированный. Симула. Болтовня.
  • Функциональная. McArthy . LISP.

Для тех из нас, у кого десятилетия в этой области, очевидно, что языки программирования смешались, и, таким образом, можно найти большинство аспектов любой чистой парадигмы в большинстве современных языков программирования, теперь называемых многопарадигмальными языками программирования : C #, Python, Java, .. .. Даже ранее чисто функциональные языки, такие как OCaml и Haskell, включают достаточно процедурных (через монады ) и функций OO, чтобы позволить вам что-либо делать.

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

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

Непарадигматическая часть эволюции была на синтаксисе. Языки, которые поощряют или даже допускают загадочные программы, становятся все менее и менее используемыми ( APL , AWK и даже Perl и LISP). В настоящее время доминирующими являются синтаксисы более читаемых (в отличие от легко записываемых) языков, таких как C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript, а также Python), Pascal (Fortran 90+). x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) и SGML (HTML, XML).

Эта диаграмма не совсем точна, и она не является современной, но она дает хорошее представление о том, сколько языков программирования сошлось со времен эры языков на сайт 1970-х годов.

эволюция языка программирования

апалала
источник
1
Это гораздо больше похоже на то, что я искал. Я думаю, что я также ищу прямую связь с морфологией и фонологией, помимо очевидной связи с синтаксисом, возникающим при работе с формальными грамматиками.
Джон Пурди
@Jon Хорошо, другая очевидная тенденция заключается в том, что английский был и остается доминирующим естественным языком, лежащим в основе всех языков программирования, как синтаксически, так и грамматически. Языки программирования слева направо, глагол первый. Японский, например, сильно отличается, но я не знаю никаких попыток разработать язык программирования в японском стиле. en.wikipedia.org/wiki/Japanese_language#Sentence_structure
Апалала,
@Aplala: порядок SOV распространен в стек-ориентированных языках, инфиксные операторы считаются SVO, а функции (патологический пример Lisp) - VSO. Английский, безусловно, оказывает сильное влияние, но я думаю, что на работе есть и другие факторы ... Возможно, мне придется провести это исследование самостоятельно. : P
Джон Пурди
@Jon Да, я забыл о Forth и Postcript, которые основаны и на стеке, и на SOV. Пожалуйста, дайте мне знать, если вы начнете исследование. Я специализировался на теории языка в университете, и языки программирования все еще мое хобби. У меня есть из первых рук воспоминания о многих из них (Simula, Prolog, LISP).
Апалала
@Jon Вам может показаться интересным, что многие испаноязычные программисты предпочитают использовать идентификаторы на испанском языке, даже если они плохо соответствуют языкам программирования, библиотекам, средам, стандартам и инструментам, которые они используют. Их программы заканчиваются на "Spanglish". Я видел подобное с программистами с родными языками на других языках с римским / латинским наследием, как восточноевропейцы. Я понятия не имею, что любят делать программисты на Дальнем Востоке (китайцы, японцы, корейцы), русские или арабские программисты.
Апалала
1

Мне нравятся ответы @ Apalala, которые, кажется, показывают сближение с несколькими основными языками общего назначения. Это имеет смысл только потому, что другие могут рано или поздно поднять хорошую идею.

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

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

Майк Данлавей
источник