Обновить
102
0.2
Роман Смирнов@Source

Head of Elixir at Ecom.tech

Отправить сообщение

Это scaffolding называется, собственно в Rails 1.x он и появился (в Rails 1.2 его с REST подружили), а потом уже все остальные скопировали.

Ну, строго говоря, хорошо читаемый язык от плохо читаемого отличает в том числе и читабельность однострочников. Другими словами, write-only однострочник можно на чём угодно написать… А вот такой однострочник, который читался бы не хуже чем verbose-вариант, очень мало языков позволяют писать… и Python, к сожалению, к ним не относится. В основном, тому виной плохо согласованная стандартная библиотека, которая так и не определилась процедурная она или объектно-ориентированная, в каком порядке должны следовать аргументы и т.д. В принципе, такие же проблемы есть и в PHP, поэтому с PHP на Python можно легко перейти… Но перейти с того же Ruby на Python крайне сложно, т.к. к хорошему быстро привыкаешь :-)
Замечу, что помимо Ruby есть ещё много языков с прекрасно продуманной стандартной библиотекой, например C#, Haskell, Elixir.

Вот Вы развели то ветку…
В данном случае, речь вообще о конкретной девушке… Даже фото над этой фразой есть. Или Вам определённый артикль нужен, чтобы не казалось?

Ну так-то да, особенно если не ASCII, но просили пример попроще, чтобы новичку легко читалось…
Кстати, для демонстрации возможностей можно ещё и по символам range использовать:


puts (' '..'~').each_slice(16).map(&:join)

Мне кажется, с ЦА промашка вышла в плане рекламы..

Сайт-визитку на VPS? Уж что-что, а Wordpress можно на любом shared-хостинге поднять… За 80 руб/месяц уже можно достаточно приличный найти. И этот несчастный Wordpress прям из админки хостинга установить.

Ага, я когда читал, подумал… зачем там вообще генерация HTML, прикрутил бы лучше XSLT для полного BDSM-набора :-)

Спасибо, отличное уточнение. Буду знать, что в Python тоже так можно сокращать.

Я на Python не программирую, чисто на уровне чтения читабельного кода с ним знаком, поэтому просто взял вариант ближе к классическому набору map/filter/reduce. Хотя генераторы в Python пользуются большой популярностью, подозреваю, что они там тупо быстрее работают :-)

Ну, это Вы немного схитрили… заранее подготовив range.
Аналог второго варианта на Ruby выглядит на Python так:


import re
print '\n'.join(re.findall('.{16}', ''.join(map(lambda x: chr(x), range(32, 128)))))

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


P.S. В любом случае, однострочники на Python лучше даже не пытаться писать, это ни разу не его сильная сторона. Получается довольно страшненько и практически нечитаемо.

Это извечный философский вопрос: Что значит "изучил язык"?
Вопрос этот не ограничивается языками программирования… и для естественных языков придумали такое понятие как уровень владения. И по факту с годами это почти не коррелирует. Точнее, очевидно, что для освоения языка на уровне С2 требуется несколько лет. Но обратное не верно, т.е. можно десятилетиями активно и успешно пользоваться языком, но не владеть им на уровне C2. Более того, практическая ценность такого уровня владения весьма спорна.
То же справедливо и для ЯП, изучить язык на уровне B2 достаточно для решения более 90% практических задач, вне зависимости от чьих-то представлений.

Ruby — неплохой вариант для начинающих. Тут я не спорю.
Однако, примеры Ваши даже программистам не понять… Потому что они нелогичны! Посмотрите, в какой ступор Вы вогнали бедного Eudokimoff своим "13.to_s.length.nil?".
Я уверен, что любой пример должен делать что-то осмысленное, ну например ASCII-табличку печатать:


puts (32..127).map(&:chr).each_slice(16).map(&:join)

или


puts (32..127).map(&:chr).join.scan(/.{16}/)

 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~ 

Это он сможет переписать на Python и сравнить… А код, напрочь лишённый смысла, нельзя сравнить с кодом на другом языке.

Ну, для обучения тому, как работает машина Тьюринга, Brainfuck вполне сойдёт. Несмотря на свою эзотеричность, это не самый бесполезный ЯП.

Пфф, а что с ней так? Зачем делать то, что будет медленнее, когда сделать нормально не составляет никакого труда:
array.sort! {|a, b| b <=> a}
Зачем писать белиберду "13.to_s.length.nil?" в качестве примера? Или Вы поставили себе задачу показать, как не надо писать на Ruby?

Пожалуйста, прекратите позорить Ruby своими примерами… Никто в здравом уме не будет так делать сортировку в обратном порядке.
Для демонстрации цепочек вызовов прекрасно подходят ActiveRecord, Ransack и т.д., проще говоря, те случаи, где уместен паттерн Fluent Interface.

13.to_s.length.nil? — это абсолютно бессмысленный код… видимо, с целью показать, что методы можно объединять в цепочки.

работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!
Хороший инженер может быть настолько не уверен в своих способностях?

Мне кажется, там речь скорее о неуверенности в перспективах развития отрасли… Посмотрите, для примера, как за предыдущие 30 лет полностью развалили лёгкую промышленность, сколько закрыли НИИ, фабрик и т.д.

В 95% случаев цикл замещается функцией map, reduce или filter.

При этом map & filter реализуются через reduce, а reduce — через рекурсию )))

Для новичков обычно "Выразительный JavaScript" советуют.

Зачем свой велосипед пилить? Есть же ETS, но сути аналог memcached, только быстрее.
В качестве дополнительной обёртки можно ConCache использовать.

Информация

В рейтинге
2 944-й
Откуда
Россия
Работает в
Зарегистрирован
Активность