ещё о Дейкстре; первая программа
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 -- но одновременно глубоко неверен.
no subject
Date: 2002-08-07 02:11 pm (UTC)вещи не поддающиеся сравнению
Re: вещи не поддающиеся сравнению
Date: 2002-08-07 03:21 pm (UTC)Re: вещи не поддающиеся сравнению
Date: 2002-08-07 03:28 pm (UTC)Re: вещи не поддающиеся сравнению
From:no subject
Date: 2002-08-07 02:20 pm (UTC)А я в 12 лет рисовал концентрические круги. И был счастлив :-)))
10 FOR R=5 TO 50 STEP 5
20 CIRCLE (100, 100, R)
30 NEXT R
no subject
Date: 2002-08-07 02:25 pm (UTC)Под Yamahu?
CP/M (предшевственица MS-DOS) + MSX Basic зашитый в ROM.
Хотя эти круги и в Корветском байсике были...
no subject
Date: 2002-08-07 02:41 pm (UTC)(no subject)
From:no subject
РУН
СКРЕЕН
КИРКЛЕ
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:в защиту Дейкстры ;-)
no subject
Date: 2002-08-07 02:39 pm (UTC)(no subject)
From:(no subject)
From: (Anonymous) - Date: 2002-08-08 01:45 am (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Не пробовала, но
From:Re: Не пробовала, но
From:Re: Не пробовала, но
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Я докажу взаимозаменяемость, за вами - доказать обратн
From:Re: Я докажу взаимозаменяемость, за вами - доказать обра
From:Re: Я докажу взаимозаменяемость, за вами - доказать обра
From:Re: Я докажу взаимозаменяемость, за вами - доказать обра
From:Re: Я докажу взаимозаменяемость, за вами - доказать обра
From:(no subject)
From:no subject
Date: 2002-08-08 01:29 am (UTC)Но овладеть SQL за два дня в объеме большем, чем SELECT *, UPDATE, INSERT представляется мне малореальным.
(no subject)
From:Позвольте оспорить.
Date: 2002-08-08 02:43 am (UTC)Конечно, если подходить формально, то все это к языку не относится, но ведь мы говорим о практике?
Re: Позвольте оспорить.
From:Ценность кода - это просто.
From:Re: Ценность кода - это просто.
From:Re: Ценность кода - это просто.
From:no subject
Date: 2002-08-07 02:43 pm (UTC)no subject
Date: 2002-08-07 08:52 pm (UTC)no subject
Date: 2002-08-07 03:08 pm (UTC)no subject
my first one was in PL/1 too (tick-tack-toe)
though I was only 10...
no subject
Date: 2002-08-07 03:34 pm (UTC)Мои первые программы были на ДВК-2.
Не удержусь и я
Date: 2002-08-07 03:42 pm (UTC)no subject
Date: 2002-08-07 03:48 pm (UTC)А я еще слышал что-то такое про то, как Вирт на курсы Паскаля не брал фортранщиков. Пол, покалеченные на всю жизнь, структурно писать не научаться.
"Real programmers don't use Pascal"
Re: "Real programmers don't use Pascal"
From:Re: "Real programmers don't use Pascal"
From:Re: "Real programmers don't use Pascal"
From:Re: "Real programmers don't use Pascal"
From:Re: "Real programmers don't use Pascal"
From:Re: "Real programmers don't use Pascal"
From:no subject
Date: 2002-08-07 11:54 pm (UTC)Дело в том, что в те времена, когда он это сказал, обучение программированию шло двумя путями: либо давали Бейсик как истину в последней инстанции (a.k.a. computer programming), либо говорили о структурах программ и данных, не привязываясь к языку (a.k.a. computer science). Впрочем, иногда вместо Бейсика давали COBOL или RPG - согласитесь, это еще хуже.
no subject
Date: 2002-08-08 01:38 pm (UTC)И я не верю. И в первую очередь, потому, что не считаю бейсик чем то ушербным. Есть разнообразные сферы человеческой деятельности, безусловно относяшиеся к категории "программирование". И в некоторых из них бейсикоподобные языки как раз удобны. В написании управляющих программ для новых ХайТек приборов, например.
Когда то, быть может, он и был справедлив. Когда слово "программирование" действительно хорошо описывало предполагаемую деятельность персонажей, потому как все занимались примерно сходными вещами в сходных условиях. Может быть, не знаю: не совсем уверен, что такое время было.
Мой опыт подтверждает афоризм Дейкстры
Date: 2014-06-23 06:19 pm (UTC)1. Имена переменных соответствовали бейсиковским правилам: одна буква или одна буква и одна-две цифры.
2. Были заведены четыре массива для временных переменных разного назначения: v, w, w1, w2. При этом были ещё и переменные с именами вида v1, v5 и т.п., и эти переменные при чтении программы легко было спутать с похожими по названию элементами массива.
3. Процедуры и функции, за исключением одной (и то, судя по всему, позаимствованной у кого-то), не имели параметров. Значения в них передавались через общее пространство переменных. Если надо было передать значение в процедуру, перед её вызовом присваивалось значение определённой переменной, а в процедуре эта переменная анализировалась. В результате перед одним из вызовов этой процедуры тот товарищ забыл присвоить переменную, и процедура работала неправильно.
Я много сил потратил, чтобы сделать из этой программы что-то удобоваримое, с нормальными "говорящими" именами переменных, с параметрами у подпрограмм, с нормальными отступами и т.п.
Хотя, возможно, всё зависит от конкретного человека ?
dva voprosa ne po delu
Date: 2002-08-11 01:37 am (UTC)2. (zlostnyj offtopik) Ne znakomy li Vy sluchajno s yuzerom