Про хаброидов

На днях видел на хабре две записи, можно либо смеяться, либо плакать.

Первая — «как правильно писать на Javascript». Первый же совет звучал примерно так:

Никогда-никогда не используйте eval()! Даже если очень надо — все равно не используйте! eval() позволяет порождать код, а это очень-очень нехорошо! Так делать нельзя, потому что так делать нельзя никогда!

В общем, аргументация была примерно на таком уровне — я только чуть-чуть преувеличиваю, «дабы дурость каждого видна была». Вопрос: почему порождать код нехорошо? Ответ: это нарушает привычную тем, кто всю жизнь писал на Паскале, «логику работы программы».

Доводя это до абсурда, скажу, что самые true-программисты никогда не используют операторы цикла, а обходятся только goto и if в виде

if(condition) goto somewhere;

Всякие бесполезные циклы нарушают логику работы программы, привычную тем, кто всю жизнь писал на FORTRAN-77.

Вторая — чувак для понтов реализовал в C++ вычисления, как он сам сказал, «с плавающей точкой» на этапе компиляции (с использованием шаблонов, разумеется). Я не буду придираться к тому, что на постсоветском пространстве вместо точки «плавает» запятая, потому как заголовок неправильный с самого начала. Число с плавающей запятой — это представление числа в виде мантиссы с фиксированным количеством знаков и порядка. У автора реализовано представление в виде отношения двух целых чисел, это несколько другое «решение». Обычно в программировании это называют «рациональными числами», не заботясь, правда, о полной корректности этой формулировки. Подходы эти принципиально разные и путать одно с другим не надо.

В общем, как кто-то заметил, «Русская Википедия — это деревенский кружок любителей истории». Хабр в таком случае — деревенский кружок любителей так называемых «информационных технологий».

Про хаброидов: 6 комментариев

  1. Разница между рациональными числами (были реализованы в Рапире и иногда приходится делать на коленке) в том что в рациональных числах 1/3*3=1, а с плавающей точкой 1/3*3=0.999999

  2. «Никогда-никогда не используйте eval()»

    Подразумевается здесь видимо то, что передавая строчку в eval нельзя(трудно) задать семантически-синтаксические ограничения и строчку для вычисления придется задавать громоздкими строковыми-жи функциями с возможностью поиметь две ошибки в одном месте — на этапе создания строки и в самой строке.

    В Lisp/Scheme существуют специальные конструкции macro/define-syntax которые создают код из шаблонов (ну что-то типа eval-printf), где код генерации строки из шаблона содержится в интерпретаторе/компиляторе/рантайме и надежен с точки зрения того, что строка кода будет генериться по известным правилам.

    Хабр интересен тем, что иногда бывает интересно догадываться из каких настоящих источников выросло очередное откровение юного гения

  3. Да там же сраные пионеры собираются. Посмотри как-нибудь на фоточки с «мега-пацанской» хабрасходки. Двумя словами можно выразить то, что на них изображено: «детский сад».

    1. завидывать плохо. Все мы были такими же как они. И кто то из них станет лучше нас. Хотя бы потому, что за Гради Бучем за 115 рублей нет нужды в маскву гонца посылать

Добавить комментарий для p.J. Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *