АвторСообщение
Завсегдатай




ссылка на сообщение  Отправлено: 21.04.11 14:21. Заголовок: Отцы и дети


Первый рассказ

Сын спросил, сколько времени надо, чтобы написать програму.
Я подумал и ответил вопросом:
- А сколько времени потребуется для уборки квартиры?

Он понял, что где-то есть подвох, но не понял где и ответил :
- Пол дня, может – день.

Тогда я продолжил:
- А сколько времени потребуется для поиска потерянной вещи?
Сын ответил, что неизвестно.
Тогда я сказал, что при написании программы приходится решать разные вопросы, для одних из них прогнозируемы, другие – нет.

Сын нахмурился, мой ответ он понял, но он не решал его проблемы.
И он опять спросил, а как же правильно запланировать время для написания программы?
Я опять подумал и опять ответил вопросом:
- А что ты делаешь, если утерянную вещь не находишь?

Сын перебрал несколько вариантов и мы остановились на варианте, что жизнь от этого «не останавливается».
Я же пояснил, что важно уметь вовремя принимать решения рубить «гордиев узел» .

Сын перестал хмуриться, но ответом он не был удовлетворен.
Тогда я посчитал, что он готов услышать старую истину и сказал:
- Прикинь, сколько времени потребуется тебе чтобы написать такую программу. Потом умножь на два. Так ты получишь время, которое потребуется для опытного программиста. А для себя – умножай на три.

Сын ушел. Он все понял, но по нему было видно, что он будет усерден и «ему-то это умножение не понадобится».

Спустя три «срока» я написал этот первый рассказ.
А сын закончил писать свою первую программу.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


Завсегдатай




ссылка на сообщение  Отправлено: 21.04.11 14:23. Заголовок: Второй рассказ (Неза..


Второй рассказ
(Незаконченный разговор с сыном о простом и сложном.)

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

Опять вчера с техническим вопросом пришел сын. Я его выслушал и ответил:
- Если по простому сделать сложно, значит придется делать сложно, но простыми способами.

В ответ в глазах сына увидел недоумение, мои слова ему показались белибердой.
А мне пришлось задуматься над подходящей к этому случаю аналогией.
Вскоре я продолжил:
- Представь, что я попрошу тебя купить и принести из магазина тонну сахара. Тебе, само собой, такой вес не то что нести, но и поднять нельзя. Но значит ли это, что задача нерешима? Конечно нет. Для ее решения достаточно будет сто раз сходить в магазин и принести по 10 килограмм.

Энтузиазма моя аналогия сыну не прибавила. Я продолжил:
- Тебе кажется, что твоя проблема очень сложная, я мой рассказ очень прост? И между ними ничего общего?
Он кивнул.
- Хорошо, усложним задачу. Тебе некогда идти в магазин, тебе надо спешить в институт. Но и в этом случае задача разрешима (можно договориться с друзьями, договориться о доставке товара на дом, отложить задачу на позднее время...). Дроби задачу на простые этапы и решай их. Кроме того, такие применение таких методов тебе окупится сторицей.

Тут я глянул на сына и закончил свой монолог: он наклонил голову над листом бумаги и, как я понял, уже вовсю «дробил» свою проблему на квадратики простых этапов.

Ладно, про опасность простых сложных методов (которые люблю за элегантность) в противовес сложным простым (которые не люблю за большой обьем и примитивность) я ему расскажу в другой раз.


Спасибо: 0 
ПрофильЦитата Ответить
Завсегдатай




ссылка на сообщение  Отправлено: 21.04.11 14:24. Заголовок: Третий рассказ Вчер..


Третий рассказ

Вчера снова состоялся разговор с сыном. Я видел, что его что-то переполняет какой-то свой вопрос, но начал он деликатно и издалека:
- Ты в прошлый раз что-то про сложные сложности недорассказал...

Я рассмеялся:
- Ну ты и подлиза! Не томи душу, выкладывай, с чем пожаловал?

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

Я тоже был доволен. Доволен его настроением и его упорством.
Но его рассказы про «не просто» меня раззадорили и я предложил:
- А давай я посмотрю твой код и прокомментирую его? А взамен дам тебе несколько строк своего кода, но ты должен будешь сказать хотя-бы что-то о его работе или назначении ?

Через несколько минут наступила его очередь смотреть мой код.
(Если вдруг кому станет интересно, см.здесь. (http://mnogo.times.lv/php.pdf).

Наступила затяжная пауза. Выждав, я сказал:
- Не мучайся. Я тоже не в состоянии его комментировать. Как и ты, вижу отдельные операции, но «за деревьями леса не разобрать».

Сын ухмыльнулся:
- С гугля копипастнул?
- Не суди по себе, этот код я написал тогда, когда гугля еще не было 

Сын сочуственно поддержал:
- Ну да... За это время многое вспомнить трудно!

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

- Знаешь, продолжил я, тут – другое. Для одного проекта я написал код. Подобно твоему, он был длинным и понятным. Но он был неоптимальным и медленно исполнялся. Зная основы формальной логики и работая на уровне битовой обработки мне удалось сильно упростить код. (После этого я вижу в нём даже некоторую элегантность!) Зато напрочь пропала прозрачность для понимания и, как результат, возможность отлаживать и развивать такой код.

- Ого, значит достаточно одной описки и ошибку обнаружить становится почти невозможно?

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

Когда сын уходил, я вдогонку спросил:
- Так какой код сложнее, твой длинный или мой короткий?

- Да длина тут не причём. Сложнее тот код, который сложнее для понимания.

Ответ меня порадовал и он точно был взят не из Гугла.


Спасибо: 0 
ПрофильЦитата Ответить
Завсегдатай




настроение....: гибкое
ссылка на сообщение  Отправлено: 21.04.11 14:46. Заголовок: http://jpe.ru/gif/s..




Спасибо: 0 
ПрофильЦитата Ответить
Завсегдатай




ссылка на сообщение  Отправлено: 01.05.11 13:33. Заголовок: Четвертый рассказ Бе..


Четвертый рассказ
Беседа с сыном про работу над ошибками.

Недавно опять разговаривал с сыном о программировании и он посетовал на то, что его программа порой глючит с расчетами.
Я спросил:
– Как думаешь, этот глюк из-за твоей ошибки или это глюк самого компа?
– Не, алгоритм прост, ошибок нет. Раз сто уже проверял, пошаговая отладка не помогла.
– Ты искал те ошибки, которые знаешь. А бывают такие, о которых не догадываешься.

Сын покачал головой и сказал:
– Не понял. Поясни?

Ладно, потратил пять минут на пояснения и еще минут через пять сын опять вернулся к разговору:
– Ты был прав, переменная в таблице хранилась как текст, а я ее использовал в расчетах как число.

Я продолжил:
– Теперь ты готов, чтобы поговорить про работу с ошибками. Знаешь, среди айтишников бытует мнение, что «программа настолько хороша, насколько хорошо умеет обрабатывать ошибки».
...

В конце нашего разговора сын задумчиво сказал:
– Я как-то раньше считал, что ошибки – это плохо, что это как-бы то, чего не должно быть. А ты перевернул все по другому: не ошибок не должно быть, а должна быть продумана их обработка, их исправление...

– Это как в жизни. Можно ошибку встретить (или допустить), но, разобравшись, больше «на эти грабли не наступать». Хотя в жизни все сложнее. Чаще верх берут лень и амбиции, нежелание признавать собственные ошибки. Знаешь, кому хуже от необработвнных ошибок?
– Знаю ! Тем, кто любит приобретать себе «грабли» ?
– Это точно.

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


P.S. Вчера сын принес мне деньги. С ним расчитался заказчик за его первую программу. Сын сказал, что без моих подсказок он бы не справился и поэтому половина причитается мне.

Спасибо: 0 
ПрофильЦитата Ответить
Завсегдатай




настроение....: гибкое
ссылка на сообщение  Отправлено: 02.05.11 13:17. Заголовок: Что касается последн..


Что касается последней проблемы...
В свою программстскую бытность, насытившись многочисленными ошибками ввода, я сделал и запомнил в своей личной библиотеке свлю собственную подпрограмму ввода данных. В этой подпрограмме я собрал все ошибки, на которые напоролся в практике. Например, там были такие преобразования -- запятая и точка преобразовывались в десятичную точку, буква З становилась цифрой Три, а О - нулем и т.д. Эта подпрограммка с именем input разошлась среди коллег и с успехом использовалась в самых разных программах.

Спасибо: 1 
ПрофильЦитата Ответить
Почетный Завсегдатай




ссылка на сообщение  Отправлено: 02.05.11 18:40. Заголовок: Ув.Особь! Как Я ра..


Ув.Особь!

Как Я рада Вас видеть!Как буд-то машина времени перенесла нас в прошлое.
Как мне нравятся Ваши рассказы "Советы программиста сыну!"
Будет ли продолжение?
С нетерпением жду.

С любовью, Дашенька. Спасибо: 1 
ПрофильЦитата Ответить
Завсегдатай




ссылка на сообщение  Отправлено: 03.05.11 16:55. Заголовок: Здравствуйте! Отвечу..


Здравствуйте!
Отвечу по порядку.

Fell, вы правы насчет проверки ввода. Сейчас это "правило хорошего тона" в программировании, а для web-программирования это еще и суровая необходимость. Ибо большинство удачных хакерских атак были проведены через встраивание кода при заполнении форм. Таких, как например, при написание комментария на форуме.

Дашенька!
Спасибо за ваше хорошее отношение к этим потугам технаря изложить на бумаге размышления отца, помогающего сыну "встать на крыло". Многие переживания выразились через эти, довольно куцые и обрезанные истории.
А начиналось все смешнее и тяжелее. Может быть (и это ваша "вина") про это я напишу "нулевой рассказ".
Будет ли продолжение - неизвестно. Первые рассказы легли на бумагу легко, но по мере взросления становится все тяжелее отделить психологическую (рассказную) часть от сугубо технической, а это уже больше подходит для баек на профессиональных форумах.
Как-то так.

Спасибо: 0 
ПрофильЦитата Ответить
Завсегдатай




ссылка на сообщение  Отправлено: 04.05.11 13:23. Заголовок: Между тем, неожиданн..


Между тем, неожиданно родился

Пятый рассказ

– Слушай, пап, тут такое дело... Есть данные, довольно сложным запросом вытаскиваю их из таблицы в читабельном виде. Это я сделал. Но надо их править и сохранять изменения обратно, а с этим у меня пока никак.

А я в это время думал совсем о другом. Мне вспоминалисьте счастливые дни, когда солнце светило ярче, когда ухаживал за своей будущей женой, когда в нас, молодежь вкладывали душу и знания наши замечательные учителя. Все это вспомнилось потому, что теперь и сын дорос до того, чтобы кое-что рассказать и ему. Единственная трудность – это подобрать правильные аналогии. Впрочем время не ждет, я стряхнул с себя приятное наваждение и сказал:
– Ты стараешься с данными работать как с тетрадкой: открыл, нашел нужное место, исправил и закрыл тетрадку. Но в твоем случае это невозможно.

Сын тут же возразил:
– Невозможно править и сохранять? Не может быть!

– Нет, я говорил не про это, а про твои методы. Твоими методами решения не достичь.
– Почему?

Простые вопросы подчас оказываются самыми сложными.

– Потому, что у тебе задача с нелинейным преобразованием, а ты ее решаешь как линейную.

После этих слов сын заметно скис. По его виду можно было понять, что он напрасно теряет время:
– И?

– Представь себе идеальный почтовый ящик. В него бросить письмо можно, но через щель достать письмо обратно уже нельзя. Так и в твоем случае, ты данные получил, но тем же путем их обратно не сохранишь. Но ведь хозяин-то из почтового ящика свое письмо достанет без проблем ? Потому, что он его достает другим способом.

– Ты хочешь сказать, что для сохранения данных надо писать другой запрос?

– Абсолютно верно!

Сын выглядел обескураженно:
– Но... Но я даже не могу вытащенные данные отредактировать! Могу только просматривать!

Я сделал наивное лицо и теперь уже я спросил:
– Почему ?

– Потому, что результат запроса не позволят редактирование!

– А разве я спрашивал о твоем запросе? Я спрашивал о данных, которые тебе надо редактировать и сохранять.

Сын уже не выглядел обескураженным. Он был похож скорее на охотничью собаку взявшую след:
– Ты хочешь сказать, что... что результат моего запроса редактировать нельзя... редактировать надо данные, которые получены моим запросом... а редактировать данные можно в таблице...

Наконец, в его глазах появилось удовлетворение:
– Результат моего запроса надо сохранить во временной таблице, ее редактировать, а потом перенести данные в основную таблицу уже другим запросом?

Это был не вопрос, это было утверждение. Даже больше того! Это было самоутверждение, ведь решение он опять нашел сам.

Спасибо: 0 
ПрофильЦитата Ответить
Почетный Завсегдатай




ссылка на сообщение  Отправлено: 04.05.11 13:32. Заголовок: http://jpe.ru/gif/s..




С любовью, Дашенька. Спасибо: 1 
ПрофильЦитата Ответить
завсегдатай




настроение....: расположенное
ссылка на сообщение  Отправлено: 04.05.11 14:43. Заголовок: В этом подходе есть ..


В этом подходе есть и принципиальные ошибки, но все-равно….Браво! Надо было стать философом, а не технарём. Поскольку особь наверняка попросит огласить "ошибки", поступлю сразу в точности также, как и он поступал со своим сыном, - дам совет без ответа, -- в следующий раз, когда сын будет решать очередную задачу, или преодолевать возникшую проблему, можно ради опыта (один разок, изменяя самому себе) просто дать ему весь смысл и ход решения проблемы, чтобы он, составляя алгоритм обработки, не доказывал заодно теорему ферма, а также все оставшиеся не решенными задачи Пуанкаре..

Спасибо: 1 
ПрофильЦитата Ответить
Завсегдатай




ссылка на сообщение  Отправлено: 04.05.11 15:38. Заголовок: Спасибо за интересны..


Спасибо за интересный комментарий.
Вот и вы меня побуждаете к написанию "нулевого рассказа"


Спасибо: 0 
ПрофильЦитата Ответить
завсегдатай




настроение....: расположенное
ссылка на сообщение  Отправлено: 04.05.11 15:56. Заголовок: Жду с интересом. И к..


Жду с интересом. И как видно по счетчику посещений, - не я один!

Спасибо: 1 
ПрофильЦитата Ответить
Завсегдатай




ссылка на сообщение  Отправлено: 05.05.11 21:25. Заголовок: Первокласник пишет: ..


Первокласник пишет:

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



Однажды сын пришел и попросил помочь с экспортом в csv-файл.
Сложность была в том, что для экспорта нужно было указывать шаблон, но файл в каждом случае мог содержать разное кол-во полей.

Уточнив, что количество возможных вариантов известно и относительно невелико, я сразу дал решение. Не изящное. Но простое и прозрачное.

Сын уходил от меня так, как будто его обжулили.

Он ожидал, что я покажу, как изменить шаблон, или генерировать его.
Я же предложил сделать необходимое количество шаблонов и переключателем (Select case) выбирать нужный.

Позже, чтобы смягчить обстановку, я рассказал, как в первых ЭВМ, которые применяли для управления противозенитной стрельбой, существенно повысили быстродействие операции умножения: просто все результаты заранее рассчитали и записали в ПЗУ.

Тоже, как бы некрасиво. Но тоже эффективно :)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
         
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 посещений сегодня: 2
вчера да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет