У этого языка есть своя ниша |будущее? - PullRequest
8 голосов
/ 07 сентября 2010

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

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

Короче говоря, основные синтаксические / языковые функции:

  1. Неограничительное лицензирование с открытым исходным кодом. Уверенно кроссплатформенный.

  2. На вкус как C ++, но более простой, Pythonic синтаксис со строгой и статической проверкой типов. Легче учиться, нет множественного наследования и других вещей, которые никто не знает: -)

  3. Байт-код LLVM / серверная часть компиляции дает скорость, близкую к C.

  4. Имеет как сборку мусора, так и явное уничтожение объекта.

  5. Реальные потоки ОС, встроенная поддержка многоядерных компьютеров. Многопоточность - это часть языка, а не библиотека.

  6. Типы имеют одинаковую ширину на любой платформе. int (32), long (64) т.т.

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

  8. Java-подобная обработка исключений (т.е. вы должны обработать все исключения)

Полагаю, я пока оставлю веб-функции и функции кластера ...

Что вы думаете? Существуют ли похожие языки, которые я пропустил?

Ответы [ 10 ]

10 голосов
/ 07 сентября 2010

Подводя итог: Ваш язык не имеет реальных торговых точек. Он просто делает то, что уже сделали дюжина других языков, с синтаксисом и семантикой, которые немного отличаются, в зависимости от того, откуда появился программист. Это может быть хорошо, так как это облегчает адаптацию языка, но вы также должны убедить людей в необходимости переключаться. Все эти вещи должны быть собраны, отлажены и документированы снова, инструменты должны быть запрограммированы, люди должны изучить это и убедить своих заостренных боссов использовать его и т. Д. "Так что это язык X с некоторыми особенностями от Y и лучше синтаксис? Но это не сделает код моего приложения на 15% короче и чище, он не освободит меня от шаблонного X и т. д. - и он не будет работать с моей IDE ». Последнее важно. Инструменты имеют значение. Если нет хороших инструментов для языка, мало кто уклонится, вполне справедливо.

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

Звучит как недостаток! Как язык "обеспечивает один X"? Как вы убеждаете программистов, что этот стиль кодирования - единственный настоящий стиль? Почему бы кому-то не пойти и заменить собаку медленной, плохо обслуживаемой, строго ограниченной IDE, которую вы «заставляете» чем-то лучше? Как один веб-фреймворк может соответствовать всем приложениям? Программистам редко нравится быть вынужденными в X, и они иногда правы.

Кроме того, ваш язык должен будет говорить с другими. Итак, вы имеете в виду готовые стандартные решения для многопоточности и веб-разработки? Возможно, вам следует начать с FFI. Python может использовать расширения, написанные на C или C ++, использовать динамические библиотеки через ctypes, а с Cython удивительно просто обернуть любую данную библиотеку C интерфейсом Python. Вы хоть представляете, сколько важных библиотек написано на C? Если ваш язык не может использовать их, люди вряд ли смогут сделать что-то (в реальном мире) с ним. Просто подумайте о графическом интерфейсе. Большинство инструментов GUI мэра - C или C ++. И у Java есть сотни библиотек (другие языки JVM получают большую выгоду от взаимодействия Java) для многих целей.

Наконец, о производительности: LLVM может дать вам собственную генерацию кода, что является огромным плюсом (с точки зрения производительности, но также и потому, что результат автономен), но оптимизаторы LLVM тоже ограничены. Не ожидайте, что он превзойдет C. Особенно не настроенный вручную C, скомпилированный через icc на процессорах Intel;)

8 голосов
/ 07 сентября 2010

"Существуют ли аналогичные языки, которые я пропустил? "

D ? По сравнению с вашими функциями:

  1. Компилятор имеет двойную лицензию - GPL и Artistic
  2. См. Пример кода здесь .
  3. LDC предназначается для LLVM. Поддержка D версии 2 находится в стадии разработки.
  4. Встроенная сборка мусора или явное управление памятью.
  5. core.thread
  6. Типы
  7. Модульные тесты / Предварительный и последующий контракты
  8. обработка исключений try / catch / finally плюс гарантии объема
5 голосов
/ 08 сентября 2010

Отвечая на несколько ваших пунктов по отдельности (я пропустил то, что я считаю неважным или хорошим):

предназначено для веб-разработки

Большинство людей используют php. Не потому, что это лучший из доступных языков, это точно.

встраивание в приложения

Lua .

распределенные приложения, высоконадежное программное обеспечение (но это для далекого будущего).

Внимательно ли вы изучили Erlang , как его дизайн, так и его эталонную реализацию?

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

Если ваш язык станет успешным, люди будут создавать другие IDE, другие стили кода, другие веб-фреймворки.

Многопоточность - это часть языка, а не библиотека.

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

Типы имеют одинаковую ширину на любой платформе. int (32), long (64) e.t.c

Вздох ... Есть только одна разумная ширина для целых чисел вне языков машинного уровня, таких как C: бесконечность.


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

Предлагаю вам прочитать некоторые из ответов Нормана Рэмси здесь о дизайне языка программирования, начиная с этой темы .

Учитывая ваш интерес к распределенным приложениям, знание Erlang обязательно. Что касается последовательного программирования, минимум - это один императивный язык и один функциональный язык (в идеале и Lisp / Scheme, и Haskell, но F # - хорошее начало). Я также рекомендую знать хотя бы один язык высокого уровня, чтобы у не было объектов, просто чтобы вы понимали, что отсутствие объектов часто может облегчить жизнь программиста (поскольку объекты комплекс ).

Что касается того, что может побудить других людей изучать ваш язык ... Хорошие инструменты / библиотеки / фреймворки не могут повредить (FORTRAN, php), и большая компания, подающая пример, не может повредить (Java, C #). Хороший дизайн, кажется, не имеет большого значения (ха-ха-ха-шутка говорит о том, что язык делает успешным использование { фигурных скобок } для разделения блоков: C, C ++, Java, C # , php) ...

5 голосов
/ 07 сентября 2010

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

Языки имеют инерцию. Люди должны изучать новые языки, а иногда и новые инструменты. Для этого им нужен стимул, и улучшение некоторых функций на 20% не снижает его.

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

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

4 голосов
/ 07 сентября 2010

Возможно, вы пропустили один ключевой термин. Производительность .

В любом случае, если этот новый язык не обладает какими-то действительно необычными функциями (например, увеличение производительности на 100% по сравнению с другими языками веб-разработки), я думаюэто будет еще одна рыба в пруду.

В настоящее время я отвечаю за поддержку структуры, разработанной / принадлежащей моей компании.Это кошмар.Если нет основного сообщества, работающего над этим полный рабочий день, это действительно слон.Я не ценю решение моей компании разработать собственную структуру (потому что она должна быть «быстрее») день и ночь.

4 голосов
/ 07 сентября 2010

номер

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

Сколько человек будет активно развивать язык? Я полагаю, что в Интернете полно неудачных проектов на языках программирования. (То же самое верно для неосновных ОС)

Посмотрите, чего достигли .Net / Visual Studio или Java / Eclipse. Это 1000 лет спецификаций, разработок, тестов, документации, отзывов, исправлений ошибок, пакетов обновления.

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

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

1 голос
/ 10 октября 2011

Звучит скорее как «системный» язык, а не как «язык веб-разработки».Основными языками в этой категории (кроме C ++ / C) являются D и Go .

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

1 голос
/ 07 сентября 2010

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

http://en.wikipedia.org/wiki/List_of_programming_languages

Примечание: имена G и G ++ не используются.Ох, и следите за патентными троллями.

Редактировать

Упс G / G ++ заняты ... все еще осталось еще много букв.

1 голос
/ 07 сентября 2010

Ну, если вам нужно заново изобрести колесо, вы можете пойти на это:)

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

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

С уважением и удачи:)

1 голос
/ 07 сентября 2010

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

Помните, что многие операторы перегружены: я думаю, это самая большая вещь, которую PHPна самом деле отсутствует.Это позволяет классам вести себя намного больше как базовые типы:)

Когда у вас есть что проверить, я с удовольствием помогу вам в этом!Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...