The OpenNET Project / Index page

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



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

Оглавление

Опубликован язык программирования Ruby 3.3, opennews (??), 25-Дек-23, (0) [смотреть все]

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


90. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 25-Дек-23, 21:43 
> Там есть Julia, которая на него очень похожа.

Чем же джулия похожа на руби?

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

97. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (47), 25-Дек-23, 22:56 
open("1.txt", "w") do f
  write(f, "some text")
end

как думаете, на каком это языке написано?

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

104. "Опубликован язык программирования Ruby 3.3"  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 25-Дек-23, 23:49 
> open("1.txt", "w") do f
>   write(f, "some text")
> end
> как думаете, на каком это языке написано?

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

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

114. "Опубликован язык программирования Ruby 3.3"  –2 +/
Сообщение от Аноним (47), 26-Дек-23, 07:56 
> Даже если на джулии, то говорить после этого о сходстве языков некорректно.

Если копируются базовые синтаксические конструкции, специфичные для конкретного языка, то ещё как корректно. А говорить можете что угодно, только специфичные примеры не сможете подобрать.

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

150. "Опубликован язык программирования Ruby 3.3"  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Дек-23, 17:21 
>> Даже если на джулии, то говорить после этого о сходстве языков некорректно.
> Если копируются базовые синтаксические конструкции, специфичные для конкретного языка,
> то ещё как корректно. А говорить можете что угодно, только специфичные
> примеры не сможете подобрать.

with open(fname) as f:
    ...

open(fname, (f) => { ... })

(with-open-file (fname)
   (...))

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

158. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (47), 26-Дек-23, 21:08 
И что это? И какое оно отношение к Руби или другому языку имеет?
Для Руби блок do..end - один из основополагающих принципов передачи анонимных методов. Как и для Джулии.
Ответить | Правка | Наверх | Cообщить модератору

162. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Дек-23, 23:36 
> И что это? И какое оно отношение к Руби или другому языку
> имеет?
> Для Руби блок do..end - один из основополагающих принципов передачи анонимных методов.
> Как и для Джулии.

Другие языки с той же концепцией: сделать что-то с открытым файлом и закрыть его.

Вот скажи мне какая разница до конкретного синтаксиса? Будет ли там блок или анонимная функция?

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

170. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (47), 27-Дек-23, 09:01 
> от скажи мне какая разница до конкретного синтаксиса?

А чего тогда вообще рассуждать о разных языках, если, как выясняется, нет никакого дела до их синтаксиса и семантики?... Тогда считаем, что все языки одинаковые, раз различия синтаксиса не имеют значения. Так получается?.... Все используем C, и дело с концом.

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

180. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 27-Дек-23, 13:56 
> Все используем C, и дело с концом.

На С ты такой код не напишешь: там функции не объекты первого типа в отличие от приведённых питона, жс и лиспа

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

193. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (47), 27-Дек-23, 18:03 
#define lambda(lambda$_ret, lambda$_args, lambda$_body)\
({\
lambda$_ret lambda$__anon$ lambda$_args\
lambda$_body\
&lambda$__anon$;\
})

printf("%f\n", lambda(float,(float x),{ return 2*x; }));
printf("%f\n", lambda(float,(float x),{ return x/3.0; }));

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

200. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 27-Дек-23, 22:59 
Ты же понимаешь, что это булшит по сравнению с приведенными примерами. Особенно доставляет приседания с именами вида lambda$_ из-за отсутствия гигиены.
Ответить | Правка | Наверх | Cообщить модератору

201. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 27-Дек-23, 23:01 
Ты совсем начал в сторону уходить. Ответь мне лучше на поставелнный вопрос: в чем принципиальное отличие твоего кода от приведенного кода на питоне/js/лиспе?
Ответить | Правка | Наверх | Cообщить модератору

208. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (47), 28-Дек-23, 11:33 
Отличие в том, что блок do..end, определяющий анонимный метод, является основным способом написания кода на Ruby и Julia. Без них никак не обойтись. И именно конструкция do..end была у Ruby в Julia позаимствована, что делает код на Julia, похожим именно на Ruby-кода, а не на JS или питон-код (только вот не надо про [()->i for i in x]). А вот для Python (у которого никих do..end нет) - лямбды - это нашлёпка, без которой он много лет обходился. Как, в общем-то, и JS.

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

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

210. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 28-Дек-23, 16:48 
> Отличие в том, что блок do..end, определяющий анонимный метод, является основным способом
> написания кода на Ruby и Julia. Без них никак не обойтись.
> И именно конструкция do..end была у Ruby в Julia позаимствована, что
> делает код на Julia, похожим именно на Ruby-кода, а не на
> JS или питон-код (только вот не надо про [()->i for i
> in x]). А вот для Python (у которого никих do..end нет)
> - лямбды - это нашлёпка, без которой он много лет обходился.
> Как, в общем-то, и JS.

В js и лиспе лямбды были изначально.

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

Ну вот цитата из https://juliahep.github.io/JuliaHEP-2023/julia-intro-anonymo...

> More throughly speaking, the do-block syntax makes an anonymous function using the body (between do and end), taking variable names immediately after the do as parameters, and passes this function as the first argument of map(). Note, this works on any function (that expects first argument to be callable), not just map().
> Many functions in the Julia standard library have alternate forms which take a function as their first argument to allow this kind of style. Generally, such functions also perform clean-up after the do-block has completed, making this a lot like with blocks in Python.
> For example, there is a version of open which enables a very familiar form to Python programmers:

То есть это просто сахар. Тоже самое можно делать через лямбды.

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

211. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (47), 28-Дек-23, 17:39 
> Ну вот цитата из https://juliahep.github.io/JuliaHEP-2023/julia-intro-anonymo...

Ну вот в чём смысл пытаться убедить, что Ruby-конструкция в Julia, без которой в куче методов нормально код писать нельзя, не является Ruby-конструкцией?.... В каком году появился блок with в питоне? У Руби do..end был от рождения. У Julia - аналогично. Я на C код лямбды с подстановкой адреса функции приводил. В теории, так писать тоже можно. Тем не менее, если "map" в Julia c многострочными функциями преобразования лепить в лямбду, за это так же оторвут руки, как и за ту самую лямбду в C.

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

212. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 28-Дек-23, 19:04 
>> Ну вот цитата из https://juliahep.github.io/JuliaHEP-2023/julia-intro-anonymo...
> Ну вот в чём смысл пытаться убедить, что Ruby-конструкция в Julia, без
> которой в куче методов нормально код писать нельзя, не является Ruby-конструкцией?....

Что значит "нормально код писать нельзя", если это просто сахар?

> В каком году появился блок with в питоне? У Руби do..end
> был от рождения. У Julia - аналогично.

Какая разница когда он появился? Lisp появился задолго до питона и руби.

> Я на C код лямбды с подстановкой адреса функции приводил. В теории, так писать тоже можно.

Ты не можешь провести аналогии? Зачем ты прицепился к руби из-за одной концепции? Я тебе привел примеры (к тому же подтвержденные докой), что это просто сахар для анонимных функций и что подобоный код (чтобы сделать что-то до и после) есть в других языках. Но ты уперся и утверждаешь, что лямбды есть в С на уровне языка, приводя в пример макроподстановку, но факт в том, что их нет.

Ты изначально утверждал https://www.opennet.ru/openforum/vsluhforumID3/132416.html#80

> Там есть Julia, которая на него очень похожа.

Из-за одной конструкции, которая как выясняется из доки просто сахар и есть в других языках, язык не может быть *ОЧЕНЬ* похож на руби. Я бы сказал, что он совсем не похож. Достаточно открыть рядом два листинга нетривиального кода и сравнить. Но раз ты стоишь на своем, то приведи тогда весь список, что там похожего.

> Тем не менее, если "map" в Julia c многострочными функциями
> преобразования лепить в лямбду, за это так же оторвут руки, как
> и за ту самую лямбду в C.

Вот как бы простой поиск https://github.com/search?q=repo%3AJuliaLang%2Fjul... дает кучу контрпримеров.

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

218. "Опубликован язык программирования Ruby 3.3"  –1 +/
Сообщение от Аноним (47), 28-Дек-23, 22:08 
> Что значит "нормально код писать нельзя", если это просто сахар?

Ты когда-нибудь код писал? Как можно называть "сахаром", основную синтаксическую конструкцию? Это тебе не аннотации Java, какие-нибудь, которыми можно обсыпать основной код.


> Вот как бы простой поиск https://github.com/search?q=repo%3AJuliaLang%2Fjul...
> дает кучу контрпримеров.

И что? Много среди них многострочников без do..end?

В общем, сядь лучше, да напиши код на Ruby и на Julia, а не читай абстрактные листинги... Или, хотя бы, на Rosetta Code примеры смотри.

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

219. "Опубликован язык программирования Ruby 3.3"  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 29-Дек-23, 02:19 
>> Что значит "нормально код писать нельзя", если это просто сахар?
> Ты когда-нибудь код писал? Как можно называть "сахаром", основную синтаксическую конструкцию?

Давай опеределим, что такое сахар https://en.wikipedia.org/wiki/Syntactic_sugar

> In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express.

В случае Julia я могу использовать многострочную анонимную функцию, что никак не повлияет на поведение программы. Они даже сами пишут, что это просто удобство https://docs.julialang.org/en/v1/manual/functions/#Do-Block-...

> Julia provides a reserved word do for rewriting this code more clearly

Более того далее они пишут

> For example, there is a version of open that runs code ensuring that the opened file is eventually closed:

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

(with-open-file (fname)
   (...))

> Это тебе не аннотации Java, какие-нибудь, которыми можно обсыпать основной код.

Не уходи в сторону. Мы не рассматриваем этот язык.

> В общем, сядь лучше, да напиши код на Ruby и на Julia, а не читай абстрактные листинги... Или, хотя бы, на Rosetta Code примеры смотри.

Ну ты приведи пример ссылкой.

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

135. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (41), 26-Дек-23, 13:52 
Вы правы, насчет Lisp. Julia - это и есть Lisp, поверх которого нацепили синтаксис в форме процедурного программирования. У Julia есть 2 cli - одна с процедурным синтаксисом Julia (запуск $ julia), другая с Lisp синтаксисом (запуск $ julia --lisp).
Ответить | Правка | К родителю #104 | Наверх | Cообщить модератору

144. "Опубликован язык программирования Ruby 3.3"  +1 +/
Сообщение от all_glory_to_the_hypnotoad (ok), 26-Дек-23, 15:34 
В общем, учёные в очередной раз хотели сделать хороший ЯП, но снова получился убогий франкенштейн
Ответить | Правка | Наверх | Cообщить модератору

147. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (41), 26-Дек-23, 15:58 
Пишут, что у них там в команде Julia начались ругачки. Одни обвиняют других в том, что что-то изначально было сделано не так и сейчас переделывать это уже невозможно. А другие типа, - все возможно, язык развивается. Но судя по темпаи развития, исправления багов, внесения фич последняя версия Julia 1.9 как-то значительно медленнее развивается, чем ее предыдущие. Но это субъективно, имхо.
Ответить | Правка | Наверх | Cообщить модератору

151. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Дек-23, 17:22 
> Пишут, что у них там в команде Julia начались ругачки.

А ссылки есть?

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

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

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




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

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