LINUX.ORG.RU
ФорумTalks

Ментальный вирус

 ,


0

4

Языки типа Ruby или Io — это тяжелые наркотики вирус, поражающий мозг.

Когда я пишу код на PHP, я думаю о том, насколько же компактнее и понятнее был бы такой же код на Ruby (или на Io).
Когда я пишу код на JS, я думаю о том, насколько же компактнее и понятнее был бы такой же код на Ruby (или на Io).
Когда я пишу код на Пейтоне (что случается раз в полгода, но всё же), я думаю о том, насколько же компактнее и понятнее был бы такой же код на Ruby (или на Io).
И даже когда я вижу случайную строчку кода на Перле, я думаю о всё том же.

Есть ли более тяжелые наркотики вирусные языки, чем Ruby? Лиспы пробовал курить — не штырит.

coffee?

надо бы запилить еще один транслятор в js, чтобы стало приятно, хочу транслятор который гораздо ближе к js чем coffee, чтобы ставил ";" за меня, например.

special-k 🤡
()

SASS/SCSS (Тьюринг-полный язык).

resurtm
()

Есть ли более тяжелые наркотики вирусные языки, чем Ruby?

Бейсик. После него тебя будет тошнить от избыточного синтаксиса и переусложнённых конструкций других языков.

Многие прелести руби кстати, напоминают мне именно бейсик.

yu-boot 👍👍👍
()

на Пейтоне
понятнее был бы такой же код на Ruby

No. Just no.

Nanodesu
()
Ответ на: комментарий от drBatty

когда я пишу на C, я думаю о коде, а не о всякой ерунде.

ЧСХ, когда я пишу на Си, я о всякой ерунде не думаю. Си довольно хорошо подходит в свою нишу. Т.е. можно было бы конечно вообразить на месте Си несуществующий язык, который чуть более удобен, но в целом Си и так хорош.

А вот в той области, где рулит Руби, все эти ПХП и Перлы выглядят как привет из эры динозавров.

geekless
() автор топика
a.each |b| do
 blabla
end

тебе понятней, чем

for b in a:
  blabla
?

Шестинедельный курс эвтаназепама и разупорина по 2 мг 3 раза в день вместо еды этому господину.

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

да лол, еще как понятнее, потому что

a.each do |b|
 blabla
end
a.map do |b|
 blabla
end
a.all? do |b|
 blabla
end
a.any? do |b|
 blabla
end
a.my_personal_blabla do |a, b, c, and_as_much_as_i_want_lol|
 blabla
end
- это универсальная удобная конструкция,
а это ваше
for b in a:
  blabla
костыль для одного случая.

special-k 🤡
()
Последнее исправление: special-k (всего исправлений: 2)

Всё правильно сказал! Пойду понюхаю этот ваш Io.

science
()
Ответ на: комментарий от special-k

for b in a: blabla

Читается человеком. И человек понимает, что здесь написано. Что написано в

a.my_personal_blabla do |a, b, c, and_as_much_as_i_want_lol|
 blabla
end
понять невозможно.

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

Читается человеком.

Читается человеком вот это:

array.select{|v|v[/someregexp/]}.each_slice(3).map{|v| "#{v[0]} blabla #{v[1]} blablabla #{v[2]}"}.join("\n")

В этом алгоритме происходит ровно то, что написанов коде: выбрать из массива все элементы по регэкспу, объединить по 3 штуки, для каждой тройки сформировать строку, и строки объединить в одну с разделителем в виде перевода строки.

А теперь напиши то же самое на этих ваших циклах.

geekless
() автор топика
Ответ на: комментарий от GateKeeper

тебе понятней, чем

Никто так не пишет на руби. Я вообще не помню, когда последний раз использовал циклы или each. Всё делается гораздо проще, понятнее и лаконичнее.

Но если у человека мозг поврежден процедурным пейтоном, и он пишет по 5 вложенных циклов, и считает, что всё понятно - это уже не лечится. Разупорин не поможет.

geekless
() автор топика
Последнее исправление: geekless (всего исправлений: 1)
Ответ на: комментарий от special-k

Ты тоже не осилил элементарные конструкции питона?

for (a, b, c) in blabla:
    do_smth(a, b, c)

Хоть бы почитал доку на официальном сайте, что ли

In [4]: for (a, b, c) in [[1, 2, 3], [2, 3, 4]]:                                                                                                                                                               
    print a                                                                                                                                                                                                    
    print b
    print c
    print "---------"
    print a
    print b
    print c
    print "---END---"
   ...:     
1
2
3
---------
1
2
3
---END---
2
3
4
---------
2
3
4
---END---
GateKeeper
()
Ответ на: комментарий от GateKeeper

Ты тоже не осилил элементарные конструкции питона?

Пока питонисты пытаются осилить элементарные конструкции, весь нормальный мир давно пишет так:

puts File.read('/etc/passwd').lines.
       map{|v| v.split(':').values_at(0, 5)}.sort_by{|v|v[0]}.
       select{|v| v[1] != '/' && File.directory?(v[1])}.
       map{|u, h| "#{u} => #{h}"}.join("\n")

А ты осиливай, осиливай...

geekless
() автор топика
Ответ на: комментарий от GateKeeper

Ну так осиль генераторы, map, list/tuple comprehensions, лямбы, наконец.

С вашим идиотским нечитабельным синтаксисом и порядком аргументов шиворот навыворот? Нет, спасибо.

geekless
() автор топика
Ответ на: комментарий от geekless

Нечитаемая каша, как по мне. Это как с перлом, пока в тонкости не вникаешь - вполне себе отличный язык, стоит войти в клуб perlmonksперлобезянок - баста, write-only.

В общем, то перлистов тебе еще далеко.

GateKeeper
()
Ответ на: комментарий от geekless

С вашим идиотским нечитабельным синтаксисом

А вот и табы подтянулись.

порядком аргументов шиворот навыворот?

Показывай на примерах.

GateKeeper
()
Ответ на: комментарий от geekless

При чем, у Ruby еще и не совсем чистый синтаксис. Если представить, что Io имеет аналогичную страндартную библиотеку (на самом деле, он сильно отличается), то алгоритм выглядел бы так:

File read('/etc/passwd') lines \
     map(split(':') values_at(0, 5)) sort_by(at(0)) \
     select(v, v[1] != '/' && File directory?(v[1])) \
     map(v, v join(" => ")) join("\n") print

geekless
() автор топика
Ответ на: комментарий от GateKeeper

Нечитаемая каша, как по мне.

Когда ты то же самое на «более читаемом» языке запишешь на экранную страницу текста, оно внезапно станет более читаемым? Лол.

geekless
() автор топика
Ответ на: комментарий от GateKeeper

А вот и табы подтянулись.

Домысливание за собеседника - отличный способ сесть в лужу.

Показывай на примерах.

str.join(array)

geekless
() автор топика
Ответ на: комментарий от ZuBB

http://www.opennet.ru/opennews/art.shtml?num=36168

О_О

Чо я могу сказать... Ахринеть. Это хороший, годный способ развития - так они могут действительно сделать тулкито-независимую libfm, и разработать годный фреймворк для построения ФМов.

geekless
() автор топика
Ответ на: комментарий от geekless

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

Xellos
()
Ответ на: комментарий от thesis

Не делай так, у меня от этого перл умер.

А теперь учимся читать простые английские слова:

array.select{|v|v[/someregexp/]}. # ВЫБРАТЬ ПО someregexp
each_slice(3). # КАЖДЫЙ КУСОК ПО 3 ЭЛЕМЕНТА
map{|v| "#{v[0]} blabla #{v[1]} blablabla #{v[2]}"}. # ПОДСТАВИТЬ ЗНАЧЕНИЯ В СТРОКУ
join("\n") # ОБЪЕДИНИТЬ
geekless
() автор топика
Ответ на: комментарий от geekless

ВЫБРАТЬ ПО someregexp

То что там регексп, это видно. А вот к чему он, не видно. |v| это ваш способ для явного именования $_, да?

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

что происходит внутри функций, мне непонятно, какие-то волшебные пайпы

{|a, b, c| blabla} - это лямбда, принимающая аргументы a, b, c и выполняющая код blabla. «Волшебные пайпы» - всего лишь скобки вокруг аргументов.

geekless
() автор топика
Ответ на: комментарий от PolarFox

Я понял, руби — ментальный вирус, который заставляет писать однострочники.

Ага, sh 21-го века. :-D

geekless
() автор топика
Ответ на: комментарий от PolarFox

Согласен, вариант {a, b, c: blabla} смотрелся бы лучше. Но проблема в том, что апрсеру надо точно знать, идёт после { список аргументов или сразу код. Поэтому был выбран такой символ, который не может начинать новое выражение - |.

geekless
() автор топика
Последнее исправление: geekless (всего исправлений: 1)
Ответ на: комментарий от special-k

Мне непонятно, почему аргументы идут после do. Я не рубист, я когда читаю текст, я понимаю do как «делать, выполнять».

Xellos
()
Ответ на: комментарий от PolarFox

Ага, потому что у него нет направленности. «|v|v[/someregexp/]» я сначала вообще понял как три элемента (первый пустой), разделённые пайпами.

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

Мне непонятно, почему аргументы идут после do. Я не рубист, я когда читаю текст, я понимаю do как «делать, выполнять».

do (или {, что тоже же самое) - это ключевое слово, которое говорит «щас будет лямбда, которую надо подставить в аргументы указанного ранее метода».

geekless
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.