Обновить
66
@NeoCoderead⁠-⁠only

Programmer

0,9
Рейтинг
105
Подписчики
Отправить сообщение
Если это художественное произведение и предполагается погружение в мир, где принято длину считать в футах, метры будут ломать это погружение — лучше оставить в футах.
Перевод нормальный. Если в оригинале написано про гориллу, то почему переводчик должен пересчитывать это в системные единицы?
Ну и Гиктаймс это таки не научный журнал:)
Ура товарищи! Она еще и полностью электрическая… супер!
Дело даже не в том, что в этой записи не допускается переменное число аргументов или перегрузка функций по аргументам (хотя и это не есть хорошо). А в том, что у меня допустим есть проект на несколько гигабайт исходников, в нем сотни тысяч функций, а я этот код первый раз вижу. И мне нужно как-то определить, какой аргумент к какой функции относится.
Как в этой записи визуально отличить к какой функции например относится число 10?
(10 (20 bar) (30 40 baz) foo)
или
((10 20 bar) (30 40 baz) foo)
Даже если нигде и не используется — пунктуаторы делают код визуально более читаемым. А если код — просто набор идентификаторов-имен через пробелы, это плохо. Равно как и переизбыток скобок типа как в лиспе… Конечно, это чисто психологический момент, но всего должно быть в меру.

А вообще, допустим вы передаете результат одной функции в другую.
foo(10,bar(20),baz(30,40)))

Как вы такое запишете без скобок?
Ну так префиксная/постфиксная запись выражений тоже куда как оптимальнее инфиксной, никаких приоритетов не надо. Чего же мы на нее не перешли?
Нет, на самом деле скобки вокруг аргументов функций играют важную роль — они выделяют то, что в данном месте именно вызов функции, а не просто переменные записаны в ряд:)
Да, мне хочется скобочек:) Я когда-то давно столкнулся с каким-то древним скриптом (на помню точно что это было), все написано правильно, а оно не работает… целый день на это убил. Оказалось, что там где-то нужно было пробелы вместо табуляции, то ли наоборот — нельзя было пробел ставить в начале строки…
Пробелы невидимы, и это их главная проблема. А скобки задают структуру программы, они видимы, осязаемы.
Язык интересный, как раз читаю неспеша документацию, отмечаю интересные моменты (как положительные так и отрицательные). Фич никогда много не бывает, но вот синтаксис на отступах мне категорически не нравится — слишком это неочевидно, где N пробелов а где N+1… Там еще подобная вещь есть — приоритет операций в зависимости от количества пробелов перед символами операций, ИМХО вообще безобразие. Также мне не понравилась система приоритетов операций, странные операции специально для беззнаковых чисел. До метапрограммирования еще не добрался Как я понимаю, в данной статье нет примеров обращения к API компилятора, а это самое «особенное» в Nim.
Очень интересно, читал с удовольствием. Продолжайте!
ОК, я так понимаю это происходит внутри одного модуля. Тогда да, эта функциональность частично пересекается с рефлексией. Таким образом, компилятор все-же сохраняет где-то строковые имена модулей и функций, это и есть языковая поддержка о необходимости которой я говорю.
Спасибо, интересно. Но это не рефлексия, а динамическая загрузка библиотек (будущий boost.dll), тоже важная фича, но другое.
Речь идет не о деталях реализации, а о четком разграничении функциональности между слоями этой реализации — что делается в компиляторе, а что в стандартной библиотеке.
Можете привести пример на обероне как это делается?
И кстати, первый раз сталкиваюсь с такой терминологией
добыть процедуру по имени

Что вы имеете в виду? Получение ссылки на процедуру во время выполнения программы по динамической строке с именем?
Нет, это не правильно. На все должна быть прописана четкая спецификация, иначе мы погрязнем в несовместимостях и Undefined Behaviour.
Язык без компилятора это просто никому не нужная абстракция. Вы вероятно в понятие «язык» включаете и базовые возможности (собственно язык в моем понимании), и стандартную библиотеку. Я же намеренно разделяю эти понятия, потому что это реально разные вещи.
Так это и есть языковая поддержка рефлексии. Ничего другого кроме предоставления информации от компилятора и не нужно.
Какие корпорации? Давайте отделим техническую дискуссию от всех этих теорий заговора, здесь им не место. Рефлексия — это естественный механизм получения метаинформации от компилятора. Если поддержки компилятора нет — то и рефлексии нет, и НИКАКАЯ библиотека не способна извлечь информацию, которой у нее нет и быть не может, пока компилятор ее не предоставит. Неужели это так сложно понять?
Если делать генерацию кода как следует, то все будет ОК. Просто до сих пор нормально никто не сделал, делали тупо «в лоб». Как минимум, при генерации кода обязательно должна создаваться метаинформация о связи генерирующего и сгенерированного кода, и активно использоваться при отладке и даже при редактировании кода.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность