@Linda-chan

Linda-chan

Линда Кайе
Linda-chan

Дата рождения: 01.11.1983

Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.

https://www.lindachan.net

10 я читаю 59 меня читают
15461 постов
26179 комментариев
Linda-chan
27 Jul 2015

Меня угнетает, что в Руби, как в Цэ сначала идёт функция, а потом - её использование. Там прототипы не объявляются?

27 Jul 2015

Например:

byaka
def byaka
  puts "Byaka!"
end

Не работает. Но если def ... перенести в начало, то всё работает.

#vybof/2 в ответ на /1
27 Jul 2015

Это ж динамический язык. Методы могут меняться находу, поэтому такое, как ты хочешь, не получится. Сделай лучше класс и не страдай.

#vybof/3 в ответ на /2
27 Jul 2015

хмь. ну я в пейтоне обычно так делаю

def main
...
end

# здесь весь кот.


main

вот кстати за что недолюбливаю ребе, так это за poetry mode.

#vybof/4 в ответ на /2
28 Jul 2015

VBScript, вроде как, тоже вполне динамический.

#vybof/5 в ответ на /3
28 Jul 2015

Кстати, что это за циферки? Артс обновила раскрашиватель?

#vybof/6 в ответ на /3
28 Jul 2015

Хотелось так:

Main

Private Sub Main()
...
End Sub
#vybof/8 в ответ на /4
28 Jul 2015

Он может на лету переопределять классы и методы?

#vybof/10 в ответ на /5
28 Jul 2015

Поэтичным стилем (poetry mode) в Ruby называют стиль написания кода, при котором опускают скобки в тех местах, где анализатор может предположить их наличие, исходя из контекста. В основном это касается аргументов при вызове метода

#vybof/11 в ответ на /7
28 Jul 2015

не, так низя, потому что всем лень усложнить интерпретатор в этом месте - это значит, придётся второй проход делать по AST, чтоб такие ссылки развернуть.
Да и в среднем это не мешает - всегда можно вытащить лишнее в отдельный модуль.

#vybof/12 в ответ на /8
28 Jul 2015

А с этим ты что делать будешь?

main
def main
    puts 1
end
main
def main
    puts 2
end
main

А если require, а не инлайн? Выстрел по ногам обеспечен :)

#vybof/13 в ответ на /12
28 Jul 2015

это ты мне или Линде?

#vybof/14 в ответ на /13
28 Jul 2015

не, на самом деле тут всё можно реализовать однозначно - таблица объектов заполняется при первом проходе, потом делается проход выполнения. т.е. у тебя должен всегда выполниться только последний main. каждый модуль инициализируется условно независимо, т.е. при require сначала произойдёт два прохода в модуле, а потом уже продолжится 1й проход по основному модулю.

т.е. я вполне могу представить себе, как это будет выполняться.

#vybof/16 в ответ на /15
28 Jul 2015

«Последний» не факт, что финальный. Метапрограммирование, оно такое… Да хоть первый, дело не в невозможности, а в стрельбе по ногам скорее :)

#vybof/17 в ответ на /16
28 Jul 2015

ну тут стрельба по ногам скорее не от возможности вызова до объявления, а от самой возможности переобъявления символа.

#vybof/18 в ответ на /17
28 Jul 2015

Это ты так тонко решил зарезать метапрограмминг? :)

#vybof/19 в ответ на /18
28 Jul 2015

почему это решил зарезать? метапрограмминг слегка про другое.
у тебя метапрограммирование - это или макросы, которые отрабатывают отдельным проходом ДО фазы выполнения кода и оперируют или строками (сишный препроцессор) или AST (макросы лиспа). При этом обычно не происходит переопределения символов. У тебя, как правило, явно объявлено, что некоторый символ - макрос, и должен быть обработан до выполнения.
или нечто, работающее в рантайме через рефлекшн и манипуляции с объектами (или нет) модулей/классов/функций и к переопределению символов на этапе компиляции отношения никакого не имеющее. Вот второй вид я сильно недолюбливаю, т.к. его очень трудно отдебажить и научить выдавать правильную диагностику ошибок.

#vybof/20 в ответ на /19
28 Jul 2015

Т.е. зарезать. Не, пиши на лиспе, не надо ломать нам Ruby :)

#vybof/21 в ответ на /20
28 Jul 2015

я нынче на питоне пишу. там тоже всё метапрограммирование только через посте^Wрантайм. очень такое дебажить бесит.

#vybof/22 в ответ на /21
28 Jul 2015

Обычно такие штуки делают только когда надо. Это свои программеры или чужие постарались, если не секрет?

#vybof/23 в ответ на /22
28 Jul 2015

кто исходники SQLAlchemy читал, тот в цирке не смеётся.

#vybof/24 в ответ на /23
28 Jul 2015

этот ваш ActiveRecord не лучше.

#vybof/26 в ответ на /25
28 Jul 2015

Ай донт ноу. Я привыкла, то при таких фокусах интерпретатор VBScript вылезает из экрана и бьёт по голове.

#vybof/30 в ответ на /15
28 Jul 2015

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

#vybof/31 в ответ на /30
28 Jul 2015

Наоборот — легко. Потому и постреляли (^__^)'

#vybof/33 в ответ на /32

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.