Изучение языка программирования, специально разработанного для этой компании [закрыто]

10

Зачем кому-то разрабатывать свой собственный язык, чтобы использовать его только внутри этой фирмы, если у вас есть XY другие языки, которые могут помочь вам с их библиотеками, логикой и т. Д.? Разве не намного проще идти в потоке с чем-то другим, чем развивать свой собственный язык?

Иосип Ивич
источник
6
Довольно много «новых» языков, которые мы имеем в дикой природе, могут использовать библиотеки, разработанные для «старых» языков: например: C ++ может использовать библиотеки Clib, Scala Kotlin и другие могут использовать любые библиотеки, работающие на JVM, Typescript может использовать библиотеки JS. Таким образом, наличие нового языка не означает потерю поддержки lib ...
Тимоти Тракл
3
Зачем вам строить драгстер, чтобы ездить на дрэг-рейсинге, а не на серийном автомобиле?
candied_orange
3
Или действительно, исследуйте причины и рациональные причины создания любого языка программирования. Некоторые люди считают, что вы не настоящий компьютерщик, пока не создадите свой собственный язык. Это похоже на то, чтобы не быть настоящим инженером-химиком, пока вы не создадите порох (и не взорвет небольшую часть вашего дома).
candied_orange
4
Эрланг также родился таким образом: если я не ошибаюсь, он изначально был разработан в Ericsson для внутреннего использования.
Джорджио
3
Язык, специально разработанный для компании, является глупым, с другой стороны, язык, специально разработанный для проблемной области, в которой находится компания, иногда может быть весьма полезным. Вы знаете, что у вас есть последнее, а не первое, когда дизайн и архитектура языка ограничены тем, что делает проблемную область намного проще для решения / выражения, иногда за счет полезности для программирования общего назначения.
Ли Райан

Ответы:

25

Намного легче понять, когда вы понимаете, что это часто продукт длительного процесса, а не кто-то просто говорит «мы хотим создать новый язык».

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

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

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

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

Есть несколько языков , которые эволюционировали так , что не привязаны к конкретным предприятиям кашля JavaScript кашля PHP кашлю .

Euphoric
источник
10
Отличный ответ, и хотя у JavaScript есть свои проблемы, я не думаю, что было бы справедливо ставить его в том же предложении, что и PHP. Это все равно что сказать: «Нам нужно выгнать Билла и Теда из нашего района, они преступники!» Но Билл (JavaScript) - сойка, а Тед (PHP) - серийный убийца.
TheCatWhisperer
12
@TheCatWhisperer Я не согласен. JavaScript такой же плохой или даже хуже, чем PHP. Потому что вы ДОЛЖНЫ использовать (или использовать) JavaScript, в то время как PHP можно безопасно игнорировать.
Euphoric
2
это наиболее актуальный момент.
TheCatWhisperer
1
@Euphoric Будем ждать WASM , может быть, сцена изменится потом ...
Kroltan
@Kroltan +1 за WASM!
CraigR8806
15

Разве не намного проще идти в потоке с чем-то другим, чем развивать свой собственный язык?

Конечно, но чтобы довести это до абсурда, мы бы все писали на ассемблере, если бы никто не разрабатывал новые языки.

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

Именно это и произошло, когда в 1953 году Джон Бакус предложил Систему перевода математических формул IBM . Он хотел, чтобы научные пользователи могли проще определять математические формулы, чем записывать их в сборке. Этот проприетарный продукт стал первым языком программирования, который не был ассемблерным, и вы знаете его как Fortran.

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

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

Я провел десятилетие между 2003 и 2013 годами, работая в компании, которая широко использовала отраслевую среду, в которую входил собственный язык, корни которого появились в конце 1970-х годов. Хотя некоторые более новые языки могли бы стать более подходящей заменой (и зацепки для них были привиты в течение долгого времени), в эту отрасль были вложены достаточно большие средства и огромный массив хорошо себя зарекомендовавшего себя кода, который просто не был хорошим бизнес-обоснованием. для переключения на что-то другое.

Blrfl
источник
-1

Я видел это раньше. Это никогда не работает хорошо. У некоторых людей есть «не изобретенный здесь» комплекс. Обычно это заставляет компанию бегать заново изобретать колесо.

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

C / C ++ используется для написания операционных систем, таких как, вы знаете, все они. И все же кто-то думал, что им нужно что-то другое.

user271591
источник
7
Видимо, ты никогда не видел Котлина. Или Javascript или C #, в этом отношении. Fog Creek Software использовала свой собственный язык программирования под названием Wasabi (на основе VB) в течение многих лет (хотя, по общему признанию, технический долг наконец-то настиг их ). Так что, безусловно, есть случаи, когда это работает.
Роберт Харви
1
Насколько я помню, C # родился после того, как Microsoft попыталась создать несовместимую реализацию Java, подала в суд на Sun и проиграла. cnet.com/news/sun-microsoft-settle-java-suit Так как они больше не могли называть это Java, они разработали свой собственный язык, который изначально был очень похож на Java.
Джорджио
1
«Этот новый язык, вероятно, все время ломается» - если ваш языковой дизайн позволяет вам избежать целого класса ошибок в приложениях, то это может быть приемлемым компромиссом
Эрик
16
Вы когда-нибудь слышали о C? Как сообщается, он был разработан собственными силами только для одной операционной системы на одном компьютере. Почему K & R просто не использует что-то доказанное, что использовалось для написания операционных систем, таких как PL / 1, BCPL или Algol 68?
idrougge