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

Что заставило бы вас попробовать (или не попробовать) новый язык программирования?

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

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

1) Какие атрибуты нового языка программирования могут побудить вас попробовать его в следующем проекте?

2) Какие атрибуты нового языка программирования могут помешать вам попробовать его в проекте? (т.е. нет библиотек,...)

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

Спасибо!

4b9b3361

Ответ 1

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

Примеры:

  • Чисто функциональные языки.
  • Требование, чтобы все было объявлено внутри класса для принудительного программирования в стиле OO.
  • Общее избегание высоко экспрессивных функций (lambdas, перегрузка оператора, динамическая типизация, вывод типа, параметры функции по умолчанию и т.д.) только потому, что они могут привести к запутыванию кода при неправильном использовании.
  • Чрезвычайно жесткая безопасность типов, даже когда я явно прошу обойти систему типов.
  • Педантичные "функции", такие как проверенные исключения и требующие, чтобы каждый файл содержал только один публичный класс верхнего уровня.
  • Абстракции, которые вы не можете получить под ними, когда нет хороших технических причин для этих ограничений.

Ответ 2

Для нового языка общего назначения, чтобы получить усыновление, я думаю, что одна функция превосходит все остальные: интеграцию с существующей установленной платформой. У вас нет времени писать все библиотеки, которые нужны языку, и зачем вам это нужно? Новые языки, такие как Clojure и Scala, сами по себе здоровы, но то, что на самом деле заставило их "пойти на вирусы", - это то, что они нацелены на JVM и взаимодействуют с Java. Помимо бесплатных библиотек ваш язык получает прибыль, это означает, что люди, которые его используют, не должны оставлять свою старую базу кода в одночасье; они могут вместо этого мигрировать постепенно с течением времени.

Следующей большой вещью является оснастка; вам нужен твердый камень, желательно быстрый компилятор. Вам нужна IDE с отладчиком. Менеджер пакетов не может повредить. Большинство программистов не будут терпеть второстепенные инструменты; они предпочли бы продолжать писать шаблоны Java, потому что по крайней мере там у них есть хорошая IDE, чтобы помочь им реорганизовать его.

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

Ответ 3

  • Сбор мусора. Это как воздух. Очень мало случаев, когда я не хочу этого. Если я не хочу этого, я готов сделать некоторые вроде танца, чтобы сделать вакуумную камеру.

  • Поддержка достойной строки. Почти все, что в наши дни включает строковые манипуляции.

  • Исключения. Если у вас нет чего-то действительно лучшего. Перейти на исключениях напоминают мне о том, как кошка бьет по полу.

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

  • Объекты. Что-то действительно хочет быть объектами. Подключение к базе данных например.

  • Лямбда. Somethings хотят быть функциями не объектов.

  • CPAN. Не специально CPAN, а что-то заполняющее обувь. Там может быть значением в проверке совместимости лицензии.

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

Ответ 4

Я даю вам свои 2 цента.

1 - Абсолютная потребность:

  • Сборщик мусора,
  • чувство очень высокого уровня (бонус, если он также может чувствовать низкий уровень при желании),
  • Читаемые
  • чувствовать себя новым; вот несколько возможных примеров:
    • имеют метапост, как распознаватель линейного уравнения (бонус, если выпуклое решение)
    • визуальный отладчик
    • лучшая функция метапрограммирования, чем Ruby
    • ...

Bonus:

  • впечатляющая графическая библиотека (видимая программа)

2 - Абсолютный NO:

  • слишком подробный,
  • не весело
  • не переносится

Ответ 5

1) Какие атрибуты нового языка программирования могут побудить вас попробовать его в следующем проекте?

При выборе языка выделяются две основные вещи:

  • Для его использования нужна другая когнитивная модель. Что-то другое, чем Lisp, Prolog, Haskell, С++ или Perl.
  • Отличные библиотеки.

2) Какие атрибуты нового языка программирования могут помешать вам попробовать его в проекте? (т.е. нет библиотек,...)

  • Отсутствие библиотек
  • Решимость решения существующих языков программирования уже решена.
  • Компилятор Buggy
  • Компилятор, который работает только на 1 ОС.

-

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

Ответ 6

Единственное, что абсолютно заставило меня попробовать новый язык, было бы языком, который по крайней мере был бы таким же высоким, как у меня сейчас, и, по крайней мере, как гибкий (например, метапрограммирование w.r.t.). Хорошей новостью является то, что я готов попробовать что-нибудь один раз, особенно если у него сумасшедшие новые идеи, поэтому это не правило, установленное в камне.: -)

Вещи, которые могли бы отвратить меня от попыток нового языка, опять же не абсолютизировать:

  • если у него не было ответа, я, вероятно, был бы гораздо менее склонен попробовать его

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

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

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

  • полное отсутствие инструментов

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

  • называется "прагматичным"!

    Ой... извините. Но это звучит для меня как язык, предназначенный для решения одной проблемы, и я хочу использовать инструменты общего назначения. (Я не думаю, что их создатели когда-либо называли C или Lisp или Smalltalk "прагматичными", и я хочу изучить следующий C или Lisp, а не следующий PHP или Java.)

  • если это зависит от какой-то очень разной платформы для ключевых функций (например, C или JVM, если язык не так сильно похож на C или Java), я менее заинтересован

    Этот, по общему признанию, резко контрастирует с тем, что уже писали другие люди. Например, я менее склонен попробовать Clojure, потому что это на JVM. У них, похоже, меньше стимулов для создания хороших новых родных библиотек, и если бы я просто хотел склеить существующие библиотеки на Java-языках, сама Java очень хороша в этом. Виды метапрограммирования, которые я выполняю сегодня, были бы невозможны в Clojure -using-Java-библиотеках, потому что это черные ящики.

    Кроме того, на протяжении многих лет я использовал собственные библиотеки и "просто переносил библиотеки C-библиотеки" для HLL, а решение "wrap the C library" всегда было намного сложнее, а это значит, что сложнее настроить, и когда (нет, если) я столкнулся с трудностями, гораздо труднее отлаживать. Поэтому, если вы говорите, что у вас есть новая система, которая может использовать все мои существующие библиотеки, я просто слышу "кросс-язычный вызов отладки кошмаров".

    Мощный и гибкий язык требует гораздо меньше библиотек, чем более слабых языков. Если бы мне пришлось написать программу на C, которая нуждалась в связанном списке, я бы, вероятно, искал библиотеку (возможно, Glib). Если бы мне пришлось делать это на Python, я мог бы написать его за меньшее время, чем потребовалось бы, чтобы найти библиотеку. И это даже не самый простой язык для записи связанного списка!

    Если я продвигаюсь в спектре абстракции, это означает, что мне понадобится меньше библиотек, чем я сейчас использую, что уже "не так много". Поэтому сделайте отличный язык, и мы выясним библиотеки, если они нам понадобятся, используя новые метафоры для этого языка. Любое время, потраченное на обертку <string.h> или java.lang, является пустой тратой времени для меня.

Я думаю, что некоторые из моих замечаний противоположны тому, что говорили другие люди. Возможные интерпретации:

  • они правы, я ошибаюсь
  • Я прав, они ошибаются.
  • Никто из нас не знает, о чём мы говорим, и вы должны просто сделать что-то классное для себя, как Деннис и Кен сделали: -)

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

Ответ 7

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

Кроме того, он должен будет решить проблемы, с которыми я сталкиваюсь в настоящее время на С#; которые, откровенно говоря, очень немногие.

Моя история работает от pascal до Delphi до VB (как я ненавидел эти 2 месяца) для ColdFusion, PHP, классического ASP, Java для моего текущего любимого: С#. Для каждого изменения существовала жизнеспособная личная и деловая причина.

Прежде чем, наконец, прыгнув между ними, я выкопал и заставил работать код. Однако для каждого хода, наконец, наступил момент, когда было очевидно, что новый язык превысил предыдущий. Это не означает, что Java (например) сегодня не лучше, чем когда-то; просто в то время, когда я двигался, это было недостаточно.

Теперь, если вы смогли создать язык с синтаксисом стиля c, который обеспечил бы лучший масштабный потенциал (подумайте о сотнях серверов с ареной 10 тысяч пользователей), я мог бы серьезно подумать об этом. Возможно, что-то с сильной привязкой к традиционной RDBMS и базе данных NoSQL и к огромному многопоточному отладчику.

Ответ 8

Вот несколько моих собственных ответов:

  • (хорошо)

    • кодирует извлеченные уроки и передовую практику: я бы предпочел не заново обнаруживать с течением времени, что уже знают более опытные разработчики.
    • компилируется в javascript: я просто изучил Java + GWT по этой причине. Я лично считаю, что в настоящее время это лучший способ разработать сложные браузерные программы.
  • (плохо)

    • Нет статической типизации. Несмотря на многословие Java, я влюблен в поддержку инструмента (Eclipse), сделав возможным статическое типирование. (Я сопоставляю это с моим фоном Python).
    • нет библиотек: я не могу создать конкурентоспособный продукт, если мне нужно начинать с нуля.

Ответ 9

Что было бы круто:

  • Язык, который просто понимает понятия как "Числа" и "Текст", и не делает ME выбора между int16, long, double или latin1, utf8, utf16.

  • Программирование мода/концепт/идеал, делающий потоки/многоядерные бризы.

Что будет uncool:

  • Сбой компилятора/интерпретатора. Язык должен ожидать идиотских программистов; -)

  • Неожиданные/ненадежные результаты или поведение.

Ответ 10

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

Причина, по которой я лично перейду на новый язык и попробую:

  • Цель создания: Паскаль был первым образовательным языком, который завоевывает всемирную популярность. Java приобрела популярность, поскольку вы могли писать мобильные приложения. Для С++, тот факт, что он был разработан для написания ядер, вы получаете точку.

  • Читаемость:. Java и Pascal легче читать исходные коды (близкие к английскому языку), чем его аналоги С++ со многими указателями. Если язык можно легко запрограммировать и исходный код можно легко прочитать, это будет представлять собой легкую документацию и исходные учебные пособия.

  • Может работать на нескольких платформах: Причина, по которой я не играл с Objective C и X-кодом, прост, у меня нет Mac. Я могу разработать платформу .NET в Linux с помощью Mono. Adobe выпустила Flex, компилятор которого написан в java и работает на любой платформе. Вы не можете оставить одну демографию разработчиков.

  • Интеграция с IDE: не идеальна, но IDE имеет преимущества.

В сущности, я пытаюсь сказать, что существует новый язык, основанный на:

  • Проблема существующих языков и создатель нового языка думает, что у него/нее есть лучшее решение, которое может работать на его/ее новом языке.
  • Сделайте то, что делает Apple. У вас должен быть Mac и X-Code (или Mono Touch) для программирования iPhone и т.д.

Сосредоточьтесь на точке № 1 (которая, как мне кажется, является приоритетной) и работайте оттуда. Вот как Microsoft придумала С#.

Надеюсь, мой 1 цент стоит!: -)

Ответ 11

Функции первого класса и замыкания с простым синтаксисом. С тех пор, как я изучил ruby ​​и javascript, я не могу смотреть на какой-либо язык, на котором нет функций первого класса и средств обработки кода времени выполнения.

Ответ 12

Если у него есть буквы "J", "A" и "V".

EDIT: BTW, я ответил на это за "не пытаюсь".

Ответ 13

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

Планируете ли вы создать этот открытый источник? Если да, то вперед и отпустите его сейчас. Все поймут, что это в альфа-стадии, но до тех пор, пока она не "готова", иногда означает, что она никогда не готова. Наличие множества ранних пользователей и пользователей означает, что у вас будет вторая важная функция для языка программирования:

Ответ 14

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

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

Ответ 15

Новый язык - люди, которые работают на С++, всегда ищут язык, который имеет лучшую поддержку управления памятью без ущерба для скорости [Java имеет лучшее управление, но медленное по сравнению с c/С++].

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

- Приветствия