The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Новая версия языка программирования Nim 0.20"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Новая версия языка программирования Nim 0.20"  +/
Сообщение от opennews (??), 11-Июн-19, 00:02 
Состоялся (https://nim-lang.org/blog/2019/06/06/version-0200-released.html) релиз языка системного программирования Nim 0.20.0 (https://nim-lang.org). Язык использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL). Код проекта поставляется (https://github.com/nim-lang/) под лицензией MIT.


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


Из предложенных в Nim 0.20 изменений можно выделить:


-  "Not" теперь всегда является унарным оператором, т.е. теперь допускаются выражения вида "assert not a", которые ранее приводили к ошибке;

-  Включены жесткие проверки преобразования целых и вещественных чисел на этапе компиляции, т.е. выражение "const b = uint16(-1)" теперь приведёт к выводу ошибки, так как -1 не может быть преобразован в целый беззнаковый тип;

-  Обеспечена распаковка кортежей для констант и  переменных циклов.
Например, сейчас можно использовать присвоения вида 'const (d, e) = (7, "eight")' и "for (x, y) in f";

-  Обеспечена инициализация по умолчанию хэшей и таблиц. Например, после объявления "var s: HashSet[int]" можно сразу выполнить "s.incl(5)", что раньше приводило к ошибке;

-  Улучшена информативность ошибок для проблем, связанных с оператором "case" и выходом за границы индекса массива;
-  Запрещено изменения длины таблицы в процессе итерации.

URL: https://nim-lang.org/blog/2019/06/06/version-0200-released.html
Новость: https://www.opennet.dev/opennews/art.shtml?num=50828

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Новая версия языка программирования Nim 0.20"  –4 +/
Сообщение от Аноним (1), 11-Июн-19, 00:02 
Кто-то юзает в продакшне, как оно?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Зщз (?), 11-Июн-19, 00:21 
Логическая цепочка: продакшен = энтерпрайз = текучка = новички не знают nim.
Сможете сами сделать выводы?
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

18. "Новая версия языка программирования Nim 0.20"  +2 +/
Сообщение от Лапчатый девляпс бубунтёнак (?), 11-Июн-19, 09:47 
Пытаюсь сделать выводы:
- В ним - почти все мы - новички, язык не попсовый, и это нормально. Дайте юзкейс, и я его освою. На го у меня ушло пару недель, например.
- энтерпрайз = текучка - прямой зависимости нет, но в большинстве нынешних шараг - таки текучка(когда я арботал в сиске, то даже выполнял роль HR, собеседуя будущих неу-дачников, в том числе и на своё место). Там же, где я арботаю - пока-что нет текучки.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от ZXC (?), 11-Июн-19, 00:38 
Я использую. Очень пригодились AST макросы.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Новая версия языка программирования Nim 0.20"  –4 +/
Сообщение от Андрей (??), 11-Июн-19, 00:07 
В Debian, похоже, фанат языка опакечивает, т.к. версия 0.20 уже 3 дня как доступна:

> nim (0.20.0-1) unstable; urgency=medium
>
>   * New upstream release
>
>  -- Federico Ceratto <federico@debian.org>  Fri, 07 Jun 2019 10:37:13 +0100

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (-), 11-Июн-19, 09:00 
Он один из контр. https://github.com/nim-lang/Nim/graphs/contributors
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Аноним (4), 11-Июн-19, 00:23 
> "Not" теперь всегда является унарным оператором, т.е. выражения вида "assert(not a)" теперь недопустимы и допускается только указание "assert not a";

Как из первого следует второе? Поясните.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Новая версия языка программирования Nim 0.20"  +2 +/
Сообщение от Аноним (6), 11-Июн-19, 00:43 
Более того, почему в первом варианте not не считается унарным?
В общем, очередной язык, чья главная фича - это пРиКоЛьНыЙ))) синтаксис
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "Новая версия языка программирования Nim 0.20"  –2 +/
Сообщение от Junior frontend developer (?), 11-Июн-19, 01:37 
Видимо неявный приоритет операторов. Скорее всего имелось ввиду что скобки теперь опциональны.
Согласен с оратором выше, язык довольно безыдейный, лучше брать мейнстримный язык или Rust.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Новая версия языка программирования Nim 0.20"  –1 +/
Сообщение от Sw00p aka Jerom (?), 11-Июн-19, 02:29 
>Скорее всего имелось ввиду что скобки теперь опциональны.

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

37. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Ordu (ok), 11-Июн-19, 19:01 
Я не знаю как там было дело, но я возился с парсерами и поэтому предположу. Строчка 'assert not a' по идее, должна парсится в AST вида assert(not(a)). В смысле применение оператора not к a, после чего результат засовывается аргументом к assert. Но у них получалось не assert(not(a)), а not(assert, a), после чего понятно, компилятору становилось плохо.

Теперь, когда они исправили парсер, скобки стали опциональны, потому что парсер даже без них строит корректное AST.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

42. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Sw00p aka Jerom (?), 11-Июн-19, 22:10 
> Теперь, когда они исправили парсер, скобки стали опциональны, потому что парсер даже
> без них строит корректное AST.

в статье написано, "т.е. теперь допускаются выражения вида "assert not a", которые ранее приводили к ошибке;"

то есть, раньше такое выражение без скобок трактовалось как? вы предположили как not(assert(a)), но вопрос в том, что если даже и так "assert not a", то левосторонний парсер должен был понять как  assert(not(a)), не так разве?

""Not" теперь всегда является унарным оператором," - вот это предложение вообще жесть, из той же википедии

"Побитовое отрицание (или побитовое НЕ, или дополнение) — это унарная операция", она что у них была не унарной? где логика?

пс: 1.7, Аноним отметил, что это неточность перевода.

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

45. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Ordu (ok), 11-Июн-19, 23:12 
>> Теперь, когда они исправили парсер, скобки стали опциональны, потому что парсер даже
>> без них строит корректное AST.
> в статье написано, "т.е. теперь допускаются выражения вида "assert not a", которые
> ранее приводили к ошибке;"
> то есть, раньше такое выражение без скобок трактовалось как? вы предположили как
> not(assert(a)), но вопрос в том, что если даже и так "assert
> not a", то левосторонний парсер должен был понять как  assert(not(a)),
> не так разве?

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

Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

47. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Sw00p aka Jerom (?), 12-Июн-19, 01:27 
> Но вообще парсер никому ничем не обязан

как так? хотите сказать, что он до сих пор не знал что такое функция как аргумент функции?


Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

49. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Ordu (ok), 12-Июн-19, 02:01 
>> Но вообще парсер никому ничем не обязан
> как так?

А вот так.

> хотите сказать, что он до сих пор не знал что
> такое функция как аргумент функции?

Нет, спасибо, не хочу.

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

43. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Sw00p aka Jerom (?), 11-Июн-19, 22:36 
not у них - логическое отрицание, bitnot битовое, суть не меняется - всегда была унарной. А у них только стала судя из статьи :)

в документации proc `not`(x: bool): bool {.magic: "Not", noSideEffect.} - один аргумент, - унарная.

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

7. "Новая версия языка программирования Nim 0.20"  +2 +/
Сообщение от Аноним (7), 11-Июн-19, 00:51 
Это просто странный перевод. Вот оригинал

>let a = false
>
># v0.19:
>assert not a # Error: type mismatch: got <proc (cond: untyped, msg: >string): typed, bool>
>assert(not a) # workaround
># v0.20:
>assert not a

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. Скрыто модератором  –2 +/
Сообщение от Аноним (10), 11-Июн-19, 03:51 
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. Скрыто модератором  +/
Сообщение от Аноним (11), 11-Июн-19, 06:24 
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. Скрыто модератором  –1 +/
Сообщение от Аноним (12), 11-Июн-19, 06:30 
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (13), 11-Июн-19, 07:48 
Разлечение не более. Без отладчика жизни нет. Проще уже c++ осилить и жить припеваючи.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Новая версия языка программирования Nim 0.20"  –3 +/
Сообщение от Аноним (14), 11-Июн-19, 08:52 
> Без отладчика жизни нет.

А что, gdb не работает? Если nim транслируется в C, для этого транслятору всего-то и надо, что директивы #line расставить.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

22. "Новая версия языка программирования Nim 0.20"  +2 +/
Сообщение от Аноним (13), 11-Июн-19, 10:34 
Привет, писатель helloworldow, тебе может быть нормально писать на одном языке, а отлаживать на другом, но нормальным людям надо работать
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

28. "Новая версия языка программирования Nim 0.20"  +4 +/
Сообщение от Аноним84701 (ok), 11-Июн-19, 13:15 
> Привет, писатель helloworldow, тебе может быть нормально писать на одном языке, а
> отлаживать на другом, но нормальным людям надо работать

Привет Экспертам Опеннета -- Знатокам обсуждаемой темы (и принципов работы GDB)!


% cat hello.nim
let
    x:int = 5
    y:string = "hello"
var
    z:int = x + 1337

z += z;
echo y, "World!", z

%  nim c --debugger:native  hello.nim
% gdb hello
>>> b hello.nim:7

Breakpoint 1 at 0x2126b6: file /tmp/nim/hello.nim, line 7.
─── Source ──────────────────────────────────────────────────────────────────────────────
1 let
2     x:int = 5
3     y:string = "hello"
4 var
5     z:int = x + 1337
6
7 z += z;
8 echo y, "World!", z

>>> p z_

$1 = 1342
>>> n
>>> p z_

$2 = 2684
>>> frame

#0  NimMainModule () at /tmp/nim/hello.nim:8
8    echo y, "World!", z


Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

30. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (30), 11-Июн-19, 13:37 
> нормальным людям надо работать

Если тебе некогда разбираться, как работает дебаггер, так и скажи, а не пытайся умничать.
Для очень занятых: gdb с nim работает, проверил. Но, что предсказуемо, не умеет показывать значения элементов массивов, последовательностей и т. п.

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

31. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Аноним84701 (ok), 11-Июн-19, 13:52 
> gdb с nim работает, проверил. Но, что предсказуемо, не
> умеет показывать значения элементов массивов, последовательностей и т. п.

В смысле?


var
5     z = [1,2,3,4,1337]
>>> p z_<tab>[4]

$4 = 1337
>>> p z_<tab>

$1 = {[0] = 1, [1] = 2, [2] = 3, [3] = 4, [4] = 1337}


Единственно, name mangling немного мешает.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

32. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (30), 11-Июн-19, 15:00 
Ну да, понятное дело, что если разобраться в манглинге, можно заставить работать. Я просто поленился препарировать сгенерированный код. Зато переменные не манглятся.
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

35. "Новая версия языка программирования Nim 0.20"  –1 +/
Сообщение от Аноним (13), 11-Июн-19, 15:58 
Мне хватило времени изучить C++, а но на извращения времени не хваатет
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

44. "Новая версия языка программирования Nim 0.20"  –1 +/
Сообщение от Аноним (14), 11-Июн-19, 23:11 
> Мне хватило времени изучить C++

Зачем обманываешь, а? C++ невозможно изучить за конечное время.

Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

16. "Новая версия языка программирования Nim 0.20"  –6 +/
Сообщение от Wilem (?), 11-Июн-19, 09:03 
> Pascal, C++, Python и Lisp

Всё то, что надо было выкинуть и использовать только как примеры «как не надо делать».

Из питона взяли систему отступов — неудачную фичу, ломающую навигацию по коду, его читаемость и написание.

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Попугай Кеша (?), 11-Июн-19, 09:38 
Курсовая работа: "Как сделать ЯП"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

39. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Anonim (??), 11-Июн-19, 19:49 
Да ладно... Вполне на диплом тянет!
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "Новая версия языка программирования Nim 0.20"  –1 +/
Сообщение от Аноняшка (?), 11-Июн-19, 10:19 
> использует статическую типизацию

на динамической писать и проще и быстрее, в разы, - да и порого вхождения сильно ниже
> и создан с оглядкой на Pascal, C++, Python и Lisp

а что общего у этих четырех (весьма достойных) языков программирования?
хипстер-смузи решил скрестить ужа с ежом?
> код на языке Nim компилируется в представление на C, C++ или JavaScript

что общего между С и JavaScript? (так и представил веб-макаку, гордо пишущую в резюме: "умею писать hello world на Nim и компилить его в JS, претендую на зарплату на 20% дороже"
> По аналогии с Python в Nim в качестве разделителей блоков применяются отступы\

ну почему, почему из Пихтона взяли худшее??
хотите легкости написания - делайте динамическую типизацию, отите качества - делайте С-подобный синтаксис....
> Код проекта поставляется под лицензией MIT.

Столлман ворчит неодобрительно и призывает громы небесные на Несвободных

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (20), 11-Июн-19, 10:26 
наверно потому что статическая типизация как бы быстрее скомпилиреутся чем динамическая не? правда тогда можно и на си писать.
и чем всем так помешали отступы? тем, что заставляют писать аккуратнее?
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

23. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Аноним (6), 11-Июн-19, 10:51 
Представь, что вместо явных знаков "обгон запрещен"/"конец зоны запрещения обгона" придумали вот какую штуку: "если трасса, идущая с запада на восток, вдруг сместилась на 20 метров к северу, то на смещенном участке трассы обгонять запрещено".
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

27. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Аноним (20), 11-Июн-19, 11:57 
ну да, это видимо у каждого по своему. не испытывал проблем с отступами. единственное, что - обратно возвращаться тяжело, опять же решаемо несколькими днями практики.
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

24. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от yet another anonymous (?), 11-Июн-19, 11:07 
> ... статическая типизация как бы быстрее скомпилиреутся чем динамическая ...

О, боги!

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

26. "Новая версия языка программирования Nim 0.20"  +2 +/
Сообщение от grsec (ok), 11-Июн-19, 11:17 
Запятая лишняя.
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

38. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Ordu (ok), 11-Июн-19, 19:20 
> наверно потому что статическая типизация как бы быстрее скомпилиреутся чем динамическая не?

Не. Динамическую проще компилировать: не надо высчитывать типы выражений и сверять их с типами переменных куда результаты вычисления выражений складываются. Вот глянь на попытку запилить комбинаторы парсеров в rust[1], если ты пролистаешь вниз ближе к концу, ты найдёшь интересный поворот в сюжете[2], когда время компиляции улетело в бесконечность, и чтобы с этим справится, пришлось переходить к динамической типизации, жонглируя в рантайме ссылками на трейты, вместо ссылок на объекты конкретных типов.

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

[1] https://bodil.lol/parser-combinators/
[2] https://bodil.lol/parser-combinators/#so-close-now

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

21. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от frthrjt (?), 11-Июн-19, 10:29 
>Столлман ворчит

И пусть. GPL запрещает некоторые другие свободные лицензии совместно использовать. Из-за этого у ZFS проблемы были.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

29. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Аноним84701 (ok), 11-Июн-19, 13:25 
>> код на языке Nim компилируется в представление на C, C++ или JavaScript
> что общего между С и JavaScript? (так и представил веб-макаку, гордо пишущую

Если вы не знаете, что такое бэкнэнд ЯП/компилятора, то возможно, не стоит пока и обзывать кого-то "веб-макакой"?

> ну почему, почему из Пихтона взяли худшее??
>  отите качества - делайте С-подобный  синтаксис....

Ну-ну


volatile const static signed long int* const restrict borsch = {(const volatile void*)0};

к-кааачеееествооо!
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

33. "Новая версия языка программирования Nim 0.20"  +1 +/
Сообщение от Аноним (30), 11-Июн-19, 15:02 
> на динамической писать и проще и быстрее, в разы, - да и порого вхождения сильно ниже

Зато ошибки потом вылавливать дольше на порядки.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

34. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (34), 11-Июн-19, 15:18 
+100500
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

41. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от angra (ok), 11-Июн-19, 21:58 
Ну разве что пишутся килобайты кода, а потом сразу отдаются пользователям без каких-либо проверок на работоспобность и правят ошибки уже на основе баг репортов. У вас так работают?

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

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

46. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от funny.falcon (?), 12-Июн-19, 01:25 
Питон ведь со строгой типизацией?
Давным давно одну либо пытался заюзать. Видимо, позвал метод, который разрабам давно не был нужен в их ежедневной работе. И в каких-то недрах либо вполне себе TypeError вылетел. Заглянул в сырую: очевидно, что раньше там из внутреннего метода одиночное значение возвращалось, и в месте падения ожидалось. Где разрабам нужно было, они поправили. А нужный мне метод оказался сиротинушкой.
Конечно, если бы у них были тесты на этот метод, они бы заметили. Но если бы была строгая типизация, они тоже бы заметили.
Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

48. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от funny.falcon (?), 12-Июн-19, 01:31 
> на динамической писать и проще и быстрее, в разы, - да и порого вхождения сильно ниже

Проще писать если не нужно руками типы прописывать. Но динамическая типизация не единственный путь к такому счастью. Есть ещё автоматический вывод типов.

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

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

50. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Аноним (14), 12-Июн-19, 21:15 
> Есть много языков, где это реализовано элегантнее и приятнее для программиста.

Заинтриговал.

Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

51. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Junior frontend developer (?), 12-Июн-19, 21:16 
>> и создан с оглядкой на Pascal, C++, Python и Lisp
> а что общего у этих четырех (весьма достойных) языков программирования?
> хипстер-смузи решил скрестить ужа с ежом?

Взял фичи из разных языков

>> код на языке Nim компилируется в представление на C, C++ или JavaScript
> что общего между С и JavaScript?

В оба языка актуально компилироваться (нативная и веб платформы соответственно)

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

36. "Новая версия языка программирования Nim 0.20"  –1 +/
Сообщение от Нанобот (ok), 11-Июн-19, 17:49 
как-то слишком много внимания на опеннете языку с полтора пользователями. не то, чтобы я был против, просто непонятна причина
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

40. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Anonim (??), 11-Июн-19, 20:02 
+100500
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

52. "Новая версия языка программирования Nim 0.20"  +/
Сообщение от Andrey Mitrofanov_N0 (?), 13-Июн-19, 13:42 
> как-то слишком много внимания на опеннете языку с полтора пользователями,

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

>не то,
> чтобы я был против, просто непонятна причина

... и ничего-ничего-ничего.

Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру