ещё о Дейкстре; первая программа
Aug. 8th, 2002 12:03 am(контекст)
Я время от времени вспоминаю это его высказывание:
Первая нетривиальная программа в моей жизни была мной написана на Бейсике.
Ещё и какая забавная была программа: она вычисляла число пи до любого знака после запятой (это в теории; на практике больше тысячи было нереально, Бейсик начинал задыхаться). Делала она это, суммируя тригонометрический ряд, который сходился к пи с точностью до коэффициента. Притом самый естественный ряд такого рода -- а именно 1 + 1/3 - 1/5 + 1/7 - 1/9 + 1/11 .... = pi/4 -- использовать было нельзя, так как он сходится до невозможности медленно. Поэтому я пошёл в библиотеку, зарылся в справочники и нашёл быстро сходящуюся формулу. Это было разложение по арктангенсу: пользуемся тем, что pi = 16*arctan(1/5) - 4*arctan(1/239), а эти два арктангенса раскладываем в ряды по формуле arctan(x) = x - x3/3 + x5/5 - x7/7 + .... Такой метод давал больше одного значимого знака на каждую итерацию. Цифры я хранил в бейсиковском массиве, и ещё там были какие-то оптимизации, не помню.
Мне было, кажется, тринадцать лет. Я был безмерно горд и счастлив.
А афоризму Дейкстры этому я не верю, и никогда не верил. Он, несомненно -- забавен? остроумен? не знаю, какое слово подобрать взамен идеально подходящего здесь английского cute -- но одновременно глубоко неверен.
Я время от времени вспоминаю это его высказывание:
Практически невозможно научить хорошо программировать студентов, ориентированных первоначально на БЕЙСИК: как потенциальные программисты они умственно оболванены без надежды на исцеление.
Первая нетривиальная программа в моей жизни была мной написана на Бейсике.
Ещё и какая забавная была программа: она вычисляла число пи до любого знака после запятой (это в теории; на практике больше тысячи было нереально, Бейсик начинал задыхаться). Делала она это, суммируя тригонометрический ряд, который сходился к пи с точностью до коэффициента. Притом самый естественный ряд такого рода -- а именно 1 + 1/3 - 1/5 + 1/7 - 1/9 + 1/11 .... = pi/4 -- использовать было нельзя, так как он сходится до невозможности медленно. Поэтому я пошёл в библиотеку, зарылся в справочники и нашёл быстро сходящуюся формулу. Это было разложение по арктангенсу: пользуемся тем, что pi = 16*arctan(1/5) - 4*arctan(1/239), а эти два арктангенса раскладываем в ряды по формуле arctan(x) = x - x3/3 + x5/5 - x7/7 + .... Такой метод давал больше одного значимого знака на каждую итерацию. Цифры я хранил в бейсиковском массиве, и ещё там были какие-то оптимизации, не помню.
Мне было, кажется, тринадцать лет. Я был безмерно горд и счастлив.
А афоризму Дейкстры этому я не верю, и никогда не верил. Он, несомненно -- забавен? остроумен? не знаю, какое слово подобрать взамен идеально подходящего здесь английского cute -- но одновременно глубоко неверен.
Re: Ценность кода - это просто.
Date: 2002-08-08 05:09 am (UTC)Действительно помогает. Просто изначально решили все делать по уму и подобные вещи собирать в одном месте, дабы было удобно для всех. На этом же репозитории обучаются.
Очень часто достаточно взять код оттуда, чуть-чуть адаптировать и использовать. Экономит время, деньги и нервы.
Re: Ценность кода - это просто.
Date: 2002-08-08 05:22 am (UTC)Про бесмыссмысленность тоже непонятно. Хранится и то и то. Код в любом случае важнее откомпилированного класса, так как код можно еще раз откомпилить, а байт-кот декомпилировать - удовольствие ниже среднего, нет? Или вот еще ситуация из жизни. Написана библиотека. Человек через год уволился и уехал. Однажды эту библиотеку использовали и обнаружили ошибку, пропущенную ранее. Вопрос: как лично Вы исправили бы эту ошибку? Декомпиляция класса? А Вы видели то, что получается на выходе существующих декомпиляторов? Написать заново? Сколько времени Вы потратите на ознакомление и написание?
Честное слово, очень странно то, что важность хранения любого исходного кода надо пояснять. Особенно Java-кода, который очень удобно править и расширять.