The OpenNET Project / Index page

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



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

Оглавление

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

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


196. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от подрывник (?), 27-Дек-23, 19:33 
>Ruby не дал ничего нового и полезного

Стиль кодирования у него на хорошем уровне. Кое-кому (мне в том числе) дали крепкого пинка под зад, показали, как писать лучше.

А с технической точки зрения — выглядит, как будто ничего нового...

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

205. "Опубликован язык программирования Ruby 3.3"  –2 +/
Сообщение от all_glory_to_the_hypnotoad (ok), 28-Дек-23, 01:51 
В ruby унесли много плохого из perl, например, неявные переменные. В начальных версиях у функций не было именнованных аргументов, нужно было доставать как в perl через shift. Также в ЯП встречаются логические косяки прямо в базовой функциональности. Склеивание строк выглядит как [ 'a', 'b' ].join(''), а должно быть ''.join([ 'a', 'b' ]). Оформление блоков по типу begin...end в 21-ом веке у ЯП общего назначения тоже дикость. Ruby проигал как раз из-за плохого 'стиля кодирования' и из-за менее фичастой стандартной библиотеки.
Ответить | Правка | Наверх | Cообщить модератору

214. "Опубликован язык программирования Ruby 3.3"  +3 +/
Сообщение от Аноним (189), 28-Дек-23, 19:14 
Ох уж эти эксперты. Они и в JS и в Perl и в Ruby шарят... 👏🤣
Ответить | Правка | Наверх | Cообщить модератору

220. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 29-Дек-23, 02:23 
> Склеивание строк выглядит как [ 'a', 'b' ].join(''), а должно быть ''.join([ 'a', 'b' ])

Почему?

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

225. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Пряник (?), 29-Дек-23, 15:42 
p.s. в расте также
Ответить | Правка | Наверх | Cообщить модератору

234. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от all_glory_to_the_hypnotoad (ok), 30-Дек-23, 19:24 
Потому что в ЯП вроде Python и Ruby списки не типизированы, т.е. самого общего назначения. А метод join() строго заточен под строки. Во-первых, зачем код работы с форматированием вклеен в контейнер о бщего назначения? Он должен быть в соответствующей библиотеке форматирования. Во-вторых, что делать если нужно сделать join для нестандартных строк или других объектов? Конкретно в ruby метод join() особо омерзителен...

['1', '2', '3'].join(' ')   -> "1 2 3"    # норм
[1, 2, 3].join(5) -> ошибка               # хочет String вместо 5
[1, '2', '3'].join(' ')     -> "1 2 3"    # какого хрена?
[1, [ '2', '3' ]].join(' ') -> "1 2 3"    # это уже просто пц

Также сюда забралась мерзость из перла в виде скрытых неявных переменных

$,='~'; ['1', '2', '3'].join(' ') -> "1~ ~2~ ~3"

В 'правильной' библиотеки мухи и котлеты должны быть отдельно, например, на некотором условном языке

Join_Fn(array, sep)           # Отдельная функция
Join(sep)(array)              # Функтор Join(...) с явными настройками далее форматирует
join = Join(sep); join(array) # .. массив через оператор вызова ()
Str_Ops(sep).Join(array)      # Аналогично, только уже модуль Str_Ops с набором функий

Здесь под array могут прятаться массивы, итераторы, генераторы и слайсы, а не только списки. Т.е. такой подход ещё и обладает большей универсальностью .. потому что мухи отдельно и котлеты отдельно. Теперь посмотрим как сделано в Python

' '.join(['1', '2', '3']) -> '1 2 3'   # норм
' '.join([1, '2', '3']) -> ошибка типа # норм

Здесь используется вариация метода Str_Ops(sep).Join(array) выше (тут ' ' = str(' ')). И в данном случае это только склейка строк, а не форматирование. И должно быть только так. Также здесь в качестве аргумента array может быть что угодно похожее на итератор.

В rust метод join() это прокся к трейту std::slice::Join, т.е. фактически сахар для вызова форматирования по типу отдельной функции Join_Fn(array, sep). И в rust массивы типизированные из-за чего отсутствует неявное форматирование и метод можно расширять для других типов. Но с логической и практичкской точек зрения такой подход всё равно плохой. С практической, например, сложнее кастомизировать join т.к. придётся придумывать как прокидывать дополнительные настройки через скахар в конечную функцию. Потому в rust есть другие методы сделать join

Итого, Ruby с точки зрения логичности, прозрачности и безопасности кода просто хлам.

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

238. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 30-Дек-23, 23:07 
> Здесь под array могут прятаться массивы, итераторы, генераторы и слайсы, а не только списки.

Ну по идее можно сделать этот метод у каждого из этих сущностей (ну или у базовой, от которой они наследуют)?

Тут просто это очень похоже на вопрос почему в питоне len() - это функция, а не метод, хотя у коллекций есть метод __len__(), который будет вызван len(). Ответ, насколько я понял, что Гвидо считает, что так математичнее https://stackoverflow.com/a/237312

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

222. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Аноним (176), 29-Дек-23, 15:02 
> Оформление блоков по типу begin...end в 21-ом веке у ЯП общего назначения тоже дикость.

А скобочки типа лучше? И почему именно в 21 веке? От тебя пахнет смузипрограммированнием и JavaScript.

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

230. "Опубликован язык программирования Ruby 3.3"  –1 +/
Сообщение от Вы забыли заполнить поле Name (?), 29-Дек-23, 21:35 
>> Оформление блоков по типу begin...end в 21-ом веке у ЯП общего назначения тоже дикость.
> А скобочки типа лучше?

Кхм. Отступы, конечно.

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

235. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от all_glory_to_the_hypnotoad (ok), 30-Дек-23, 19:43 
к 21 веку инженеры успели наплодить много разных ЯП с разными подходами и синтаксисами, и успели вдоволь с ними насношаться. Cейчас уже хорошо видно какие подходы удачные и какие нет. Неудобство BEGIN...END было уже понятно давно, это один из самых древних методов структурирования кода.

Отступы тоже плохи. Нет возможности писать однострочники, из-за этого в ЯП вроде питона приходится придумывать отдельные конструкции для однострочников, которых всё равно мало. Также есть вечная проблема SPACE vs TABS и чему равен TAB. В коде не всегда видно что стоит - SPACE или TAB, из-за чего текст может оказаться невалидным и непонятно где для глаза.

И таки да, из самых удобных остаются только односимвольные парные скобки типа () <> {}, какие плюсы: нужно меньше набирать текста, оформление блоков не отвлекает на себя много внимания в текстах программ, симметричные из-за чего графически понятно где находится содержимое.

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

239. "Опубликован язык программирования Ruby 3.3"  +/
Сообщение от Вы забыли заполнить поле Name (?), 31-Дек-23, 00:19 
> к 21 веку инженеры успели наплодить много разных ЯП с разными подходами
> и синтаксисами, и успели вдоволь с ними насношаться. Cейчас уже хорошо
> видно какие подходы удачные и какие нет. Неудобство BEGIN...END было уже
> понятно давно, это один из самых древних методов структурирования кода.

Ну просто end для конца блока норма читается.

> Отступы тоже плохи. Нет возможности писать однострочники, из-за этого в ЯП вроде
> питона приходится придумывать отдельные конструкции для однострочников, которых всё равно
> мало. Также есть вечная проблема SPACE vs TABS и чему равен
> TAB. В коде не всегда видно что стоит - SPACE или
> TAB, из-за чего текст может оказаться невалидным и непонятно где для
> глаза.

Решается форматерами кода. Сейчас все новые языки поставляются с форматерами.  

> И таки да, из самых удобных остаются только односимвольные парные скобки типа
> () <> {}, какие плюсы: нужно меньше набирать текста, оформление блоков
> не отвлекает на себя много внимания в текстах программ, симметричные из-за
> чего графически понятно где находится содержимое.

Отступы, все равно будут для читаемости. К тому же опять могут возникуть вопросы где ставить { скобку: есть K&R, всегда на той же строке и GNU стили.


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

242. "Опубликован язык программирования Ruby 3.3"  –1 +/
Сообщение от Аноним (176), 31-Дек-23, 21:32 
Function FFOff()
  For i = 0 To 10
   If i = 2 Then
    …
   End If
  Next
End Function
Ответить | Правка | К родителю #235 | Наверх | Cообщить модератору

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

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




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

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