|
2.9, Аноним (9), 00:50, 11/10/2025 [^] [^^] [^^^] [ответить]
| +5 +/– |
особенно "с акцентом на выразительность" - вырвиглазность
| |
|
3.19, Аноним (-), 07:23, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> особенно "с акцентом на выразительность" - вырвиглазность
Что делать, в новостях бывают опечатки :)
| |
|
|
1.5, Аноним (5), 00:06, 11/10/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
> с акцентом на выразительность
> let ( * ) (x,~dx) (y, ~dx:dy) = x*.y, ~dx:(x *. dy +. y *. dx )
Хотелось бы услышать экспертное мнение о сабже от сишников, которые при каждой возможности воют о том, какой у Раста нечеловеческий синтаксис.
| |
|
2.6, Аноним (6), 00:15, 11/10/2025 [^] [^^] [^^^] [ответить]
| +19 +/– |
Все верно, с акцентом на выразительность
Вот как тут не выразиться, глядя на такой код?
| |
2.7, Аноним (-), 00:19, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Хотелось бы услышать экспертное мнение о сабже от сишников,
Сейчас тебе расскажут что "все просто и понятно" :)
С другой местные кекспертные сишники обычно еще и яростно наяривают на lisp и scheme, а иногда даже на перловку.
| |
|
3.20, Аноним (-), 07:24, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Сейчас тебе расскажут что "все просто и понятно" :)
Да вообще элементарщина. Ящеры совсем не палятся...
| |
3.22, Аноним (22), 07:48, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
В Lisp и Sсheme нет синтакиса в общем случае. Нет синтаксиса - нет проблем. Так что все действительно просто и понятно. Так что наяривали, наяриваем, и будем наяривать.
| |
|
4.36, Bottle (?), 13:59, 11/10/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Вы эти сказки неофитам оставьте, тут конечно не сидят прожжёные самовары, но люди понимают, что это піздѣж чистой воды.
| |
|
5.44, freehck (ok), 16:56, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Вы эти сказки неофитам оставьте, тут конечно не сидят прожжёные самовары, но
> люди понимают, что это ###### чистой воды.
Справедливости ради стоит отметить, что базовый синтаксический анализатор для лиспа действительно можно написать настолько компактно и коротко, что с некоторой натяжкой, если сравнивать его со всеми остальными языками в мире, можно сказать, что у лиспа "нет синтаксиса". Так, правда, никто естественно не делает, потому что не хотят жертвовать производительностью. )
Однако конечно же, утверждать, что синтаксиса в лиспах нет совсем -- не верно по определению.
| |
|
|
|
2.8, Аноним (8), 00:30, 11/10/2025 [^] [^^] [^^^] [ответить]
| +7 +/– |
Как сишник, не вижу противоречий, что у раста, что окамл, синтаксис непонятный.
| |
|
3.10, Аноним (10), 00:58, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
Функциональные языки в целом не от мира сего, более-менее адекватно выглядят только созданные под конкреьные задачи Erlang (телеком) и F# (банкинг).
| |
|
4.13, Аноним (13), 01:48, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
>F# (банкинг).
Только вот F# это почти Ocaml, подобно тому, как C# почти Java.
| |
|
|
2.12, Аноним (13), 01:48, 11/10/2025 [^] [^^] [^^^] [ответить]
| +4 +/– |
На всякий случай сообщаю, что первые версии раста были написаны на окамле.
ЗЫ интересно, кто-то кроме меня на опеннете в состоянии понять, что здесь написано?
| |
|
3.21, Аноним (-), 07:25, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> На всякий случай сообщаю, что первые версии раста были написаны на окамле.
А первые версии си - вообще на ассемблере, вероятно. Не означает что толпа народа с энтузиазмом возьмется на ассемблере писать.
| |
|
4.37, Аноним (37), 14:53, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
Первые версии GCC, который тогда умел только C компилять, на каком-то Паскале.
| |
|
|
2.15, Аноним (-), 04:58, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
Всё ещё понятнее растосинтаксиса. Да даже у хаскеля синтаксис понятнее.
| |
2.24, Vkni (ok), 08:19, 11/10/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Наверное это троллинг. Если хочется на Камле писать код с плавающей точкой, то надо в преамбуле модуля написать
let (+) = Float.(+)
и т.д., а дальше писать с нормальными +-. Увы, нормально это в системах типов Хиндли-Милнера без классов типов не делается, а OCaml вынужден идти другим путём.
Зачем тащить эти +. *. в учебный пример? В оригинальном PR'е пример значительно разумнее:
let sum_and_product ints =
let init = ~sum:0, ~product:1 in
List.fold_left (fun (~sum, ~product) elem ->
let sum = elem + sum in
let product = elem * product in
~sum, ~product
) init ints
См https://github.com/ocaml/ocaml/pull/13498
И, в общем, понятно, что это идёт из кровавого ынтерпрайза (Улицы тёти Жени). И да, там оно имеет смысел.
| |
|
3.34, freehck (ok), 13:52, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Наверное это троллинг.
Скорее дань традиции.
> Если хочется на Камле писать код с плавающей точкой, то надо в преамбуле модуля написать
> let (+) = Float.(+)
Да в целом можно даже лучше[1], заменив сразу все операторы:
open Core.Float.O
[1] https://ocaml.org/p/core/v0.17.1/doc/core/Core/Float/O/index.html
> и т.д., а дальше писать с нормальными +-. Увы, нормально это в системах типов Хиндли-Милнера
> без классов типов не делается, а OCaml вынужден идти другим путём.
Ну, нормально или нет -- это всё же вкусовщина. Вот мне например больше нравится с модулями заданных сигнатур работать.
Это ведь нагляднее: в 99.999% случаев мы в рамках заданного контекста один фиг работаем только с одним типом данных.
Впрочем, я не стану отрицать, что когда я впервые столкнулся с тайпклассами, Haskell изрядно подпортил общее впечатление умолчательной ленивостью.
Вполне возможно, что мой тезис более говорит о том, что я выбираю OCaml вместо Haskell, а не общие сигнатуры модулей вместо тайпклассов.
> Зачем тащить эти +. *. в учебный пример? В оригинальном PR'е пример
> значительно разумнее:
> let sum_and_product ints =
> let init = ~sum:0, ~product:1 in
> List.fold_left (fun (~sum, ~product) elem ->
> let sum = elem + sum in
> let product = elem * product in
> ~sum, ~product
> ) init ints
Дружище, при всём уважении, суть не в точке. Я подозреваю, что местным комментаторам List.fold_left сам по себе мозг вынесет куда больше, нежели она.
Это только для опытных функциональщиков навроде нас с тобой данный пример выглядит проще и понятнее.
> И, в общем, понятно, что это идёт из кровавого ынтерпрайза.
Думаю, что проще. Когда писали SML концепция модуля уже была, а вот концепции тайпкласса -- ещё не было.
| |
|
2.25, Аноним (-), 08:27, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
Выразительность ≠ Читабельность. У чистой сишки одновременно имеются оба эти качества: выразитеьность и читабельность.
| |
|
3.27, Аноним (27), 11:46, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Выразительность ≠ Читабельность. У чистой сишки одновременно имеются оба эти качества:
> выразитеьность и читабельность.
Угу, угу
https://www.ioccc.org/2005/aidan/aidan.c
[CODE]
if(!C) {
l=(o=S].O)?S].I:0; I=o?S].l%9+1:(S].O=i%9+1);
for(;l<81;l++,I=S].O,o=0) if(!(s]>>10)) {
for(;;I=I%9+1,o=1) {
l0=0; if(o&&I==S].O) goto O;
if(s]>>I&1) {
S].l=I; S++].I=l; S]=S-1];
N(I,); O>w&&(w=O); goto lO;
}
}
}
}
lO: S].O=0; goto l0; l: if(!(l0=O)) { L=0; goto O; } O--;
s,S].I] &=~ (1<<S].l);
[/CODE]
| |
|
2.30, freehck (ok), 13:03, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
>> с акцентом на выразительность
>> let ( * ) (x,~dx) (y, ~dx:dy) = x*.y, ~dx:(x *. dy +. y *. dx )
Ну, как человек хорошо знакомый с OCaml я скажу, что мне тут всё понятно без пояснений, так что да: выразительность (и читабельность) тут налицо.
> Хотелось бы услышать экспертное мнение о сабже от сишников, которые при каждой
> возможности воют о том, какой у Раста нечеловеческий синтаксис.
Зачем вообще говорить с людьми, которые судят язык по синтаксису, не зная его?
Посмотри комментаторов величайшего уровня экспертизы выше и ниже. У них на лице написано, что им синтаксис глаз режет исключительно тем, что они никогда ни с чем подобным не сталкивались.
А тем временем, синтаксис OCaml -- это вообще-то синтаксис строго типизированного языка с автоматическим выводом типов, и так-то он является продуктом весьма серьёзной работы инженеров и математиматиков в течение последних нескольких десятков лет.
| |
2.43, NonRumata (?), 16:15, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
Я, конечно, извиняюсь.
Но напишите, как в вашем понимании будет понятно и выразительно (неважно на чем, Си, OCaml, Python, Erlang).
P.S. Я вот просто смотрю и явно вижу знакомую формулу и даже не представляю, как можно было понятнее написать.
| |
|
3.45, Аноним (9), 16:56, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
не выразительного языка по определению быть не должно, то что не читабельно для среднестатистического императивщика - да!!! Любой ЯК подвержен "синтаксическому диабету" и OCaml болеет этим.
> P.S. Я вот просто смотрю и явно вижу знакомую формулу и даже не представляю, как можно было понятнее написать.
Ну и китаец смотрит на свои закорючки и ему все понятно, а какой-нибудь европеец будет "плеваться" до тех пор, пока не поймет смысл этих закорючек, думаю естественная реакция людей, которые с ходу чисто логически не уловили смысл синтаксической конструкции.
| |
|
|
1.18, Аноним (-), 07:22, 11/10/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> В OCaml гармонично сочетается функциональное ядро,
> императивные возможности, продвинутая объектная
> система и неповторимая модульная система.
...и абсолютно отбитый синтаксис, после которого Rust и C++ кажутся не такими уж и плохими.
let ( * ) (x,~dx) (y, ~dx:dy) =
x*.y, ~dx:(x *. dy +. y *. dx )
Все очень читаемо и понятно, разве нет? :). Блин даже автоцензор на такой код агрится. На что же это похоже?...
| |
|
2.28, Аноним (28), 13:01, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
И что же тут непонятного? Простая перезагрузка оператора для дифференцирования. Матан 1 курс, алло!
| |
|
3.35, freehck (ok), 13:58, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> И что же тут непонятного? Простая перезагрузка оператора для дифференцирования.
Да, вот только не перегрузка, а переопределение. Это важно.
| |
|
|
|
2.29, Аноним (28), 13:03, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
Окамлу 100 лет в обед, вы удивитесь что только с него срисовывали. А на деле - чего тут срисовывать? Окамл просто предоставляет строгую семантику для математических функций. То есть зная математику окамл учится за вечер.
| |
|
3.31, Аноним (9), 13:11, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> То есть зная математику окамл учится за вечер.
жонглируя предметами, вы не познаете силу притяжения.
| |
3.32, freehck (ok), 13:23, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
> То есть зная математику окамл учится за вечер.
Вот кстати поддерживаю на 100%. Берёшь RealWorldOcaml, за день читаешь первые несколько глав -- и базовый OCaml уже освоен.
А дальше будет уже исключительно изучение усиливающих разработчика абстракций.
| |
3.40, Аноним (37), 15:06, 11/10/2025 [^] [^^] [^^^] [ответить]
| +/– |
100 лет в обед это вообще ML-ям, а конкретно OCaml появился в 1996.
| |
|
|
1.39, blevakagmail.com (?), 15:04, 11/10/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Ocaml for.net aka F#
Rust via ocaml
Fabel fsharp компилируется в Раст. Кстати ребята делают на f# fidelity fw компилируется в mlir натив. У оригинала также классный компилятор
| |
|