LINUX.ORG.RU
ФорумTalks

Образец годного ЯП

 ,


0

7

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

1. Ни в коем случае не интерпретируемый/скриптовый: сложно соблюдать правила «хорошего тона» при написании кода. В случае с компилируемым языком - у меня есть компилятор, который даст по рукам если что.

2. Обязательно наличие строгой статической типизации: никаких int = double быть не должно. Желательно иметь о подобном предупреждение по дефолту. В идеале - сообщение об ошибке.

3. Желательна, но не обязательна объектная ориентированность: цель структурирование кода, настоящая модульность.

4. Желательно наличие REPL дабы можно было на лету проверять свои догадки и предположения о тех или иных аспектах кода.

5. Мэйнстримный: брейнфаки идут лесом ибо некому сопровождать и поддерживать код.

1. Каковы ваши предпочтения?

2. Есть ли что-нибудь удовлетворяющее этим пунктам?

Дискасс.

★★★★★

Последнее исправление: LongLiveUbuntu (всего исправлений: 1)
Ответ на: комментарий от quiet_readonly

Желательно наличие REPL дабы можно было на лету проверять свои догадки и предположения о тех или иных аспектах кода

LongLiveUbuntu ★★★★★
() автор топика

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

Ну ничего, мы потерпим... первое сентября уже скоро

golodranez ★★★★
()
Ответ на: комментарий от LongLiveUbuntu

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

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

quiet_readonly ★★★★
()
Ответ на: комментарий от tailgunner

Первый пункт требований - это лютый фейспалм. Блин, и эти люди называют себя программистами...

+мильён !!!!

golodranez ★★★★
()
Ответ на: комментарий от LongLiveUbuntu

А зачем тебе язык, который ты не знаешь? Зачем бегать от языка к языку, если можно выучить C++ или другой язык по-нормальному и реплы будут не нужны?

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

quiet_readonly ★★★★
()
Ответ на: комментарий от arturpub

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

tailgunner ★★★★★
()

Паскаль идеально подходит под эти критерии. Однако, в онтопике он не такой уж и мейнстримный.

segfault ★★★★★
()
Ответ на: комментарий от wota

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

cdshines ★★★★★
()
Ответ на: комментарий от next_time

Не смеши народ. В строгих статических языках тоже не обязательно писать везде типы. Обзорчик ниочинь.

cdshines ★★★★★
()
Ответ на: комментарий от arturpub

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

cdshines ★★★★★
()

Всем условиям удовлетворяет OCaml.

1) Компилируемый. Можно в байткод, можно в натив. Правда, с оптимизациями там не ахти, но, как выясняется, даже тупая стратегия компиляции даёт хорошие результаты.

2) Типизация настолько строгая, что 1.0 + 2.0 даст ошибку (надо 1.0 +. 2.0)

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

4) REPL есть, как родной ocamltop, так и более продвинутый utop. Оба работают под emacs-ом.

5) Достаточно мэйнстримный — поддерживается солидной фирмой, мелкосакс уже ворует из него фишки.

Miguel ★★★★★
()
Ответ на: комментарий от quiet_readonly

Зачем бегать от языка к языку, если можно выучить C++ или другой язык по-нормальному и реплы будут не нужны?

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

Miguel ★★★★★
()
Ответ на: комментарий от ya-betmen

Мне ни за один не стыдно. Поясните, чего именно я должен стыдиться, тогда и посмотрим.

Мне не стыдно даже за такой тред (ШОК!)

while (true)
{
  engine.processEvents();
  Thread.sleep(10);
}
Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 1)
Ответ на: комментарий от LongLiveUbuntu

Есть же runhaskell и вообще hugs (хоть и заброшенный).

yoghurt ★★★★★
()
Ответ на: комментарий от Reset

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

Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 1)
Ответ на: комментарий от quiet_readonly

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

$ vim 1.cpp
$ gcc 1.cpp ....
$ ./a.out
?

Reset ★★★★★
()
Ответ на: комментарий от Sadler

Девайс всё равно быстрее 100 раз/сек не отдаст данные гарантированно.

Девайс настолько тупой, что не дает прерывания по готовности данных?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Девайс настолько тупой, что не дает прерывания по готовности данных?

По крайней мере в API этого нет. Предлагается дёргать девайс и проверять, есть у него данные или нет.

Sadler ★★★
()
Ответ на: комментарий от Sadler

Ну, даже в этом случае лучше передавать в цикл обработки событий специальное событие «пришло время опросить устройство».

tailgunner ★★★★★
()
Ответ на: комментарий от Reset

А разрабам писали, чтобы сделали адекватный API?

Да пока, вроде, повода не было. Как я уже говорил, данные и так вполне снимаются.

Sadler ★★★
()
Ответ на: комментарий от tailgunner

Ocaml

Хм, я думаю его интерпретатор чисто чтобы в консольке поковыряться, основная фишка всё же компилятор. Кстати, видел в критике ocaml то что порядок вычислений интерпретатора может не совпадать с компилером.

true_admin ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Уж лучше кучу исключений написать, чем ловить сегфолты на самом интересном месте.

вот жеж троль ...

placeholder
()
Ответ на: комментарий от Reset

На функциональность я куски кода не проверяю, на компилируемость проверяю в ide без компиляции — если будут ошибки, среда подчеркнёт.

quiet_readonly ★★★★
()
Ответ на: комментарий от Reset

Надо возвращать null или код возврата, который в мануале документируется в первую очередь, а не задним числом, как исключения (даже в джаве с её статической проверкой).

Расширенная диагностика ошибок — в отдельный коллбек или на подписчиков, как это делается в opengl и многих компиляторах.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

Надо возвращать null или код возврата

Вроде бы в XXI веке живём: есть Either, Try, функции могут возвращать несколько значений, есть монады в конце-концов...

quantum-troll ★★★★★
()
Последнее исправление: quantum-troll (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.