понедельник, 13 апреля 2009 г.

Кривая забывания Эббингауза и повторение

Забывание — сложный и неравномерный процесс. В 1885 году немецкий ученый Эббингауз получил кривую забывания, на которой видно, какую часть прочитанного человек помнит через разные промежутки времени. В первые часы объем усвоенной информации быстро падает и через 10 часов составляет всего 35% от изученного.

суббота, 4 апреля 2009 г.

А.Богатырев. Руководство полного идиота по программированию

Не знаю почему, но заниматься программированием пытаются не имея понятия об азбуке. Форумы полны вопросов - у меня есть формула шифрования, в VS я нарисовал окно для ввода данных, на кнопочку повесил вызов, но подскажите, как мне прибавить одно значение к другому?

Строки и указатели в C# и Java другие, и в книге ни слова об объектах - но книга обязательна к прочтению перед изучением любого другого языка, и уж тем более перед "в VS(NetBeans, ..., ) я нарисовал окно".

четверг, 2 апреля 2009 г.

Веревка достаточной длины, чтобы... выстрелить себе в ногу

...Есть разные мнения о возможности мышления вне языка, но я убежден, что аналитическое мышление того типа, который нужен в компьютерном программировании, тесно связано с языковыми навыками. Я не думаю, что является случайностью то, что многие из знакомых мне лучших программистов имеют дипломы по истории, филологии и схожим наукам. Также не является случайностью то, что некоторые из виденных мной худших программ были написаны инженерами, физиками и математиками, затратившими в университете массу энергии на то, чтобы держаться как можно дальше от занятий по языку и литературе.
Сущность заключается в том, что математическая подготовка почти не нужна в компьютерном программировании. Тот тип организационного мастерства и аналитических способностей, который нужен для программирования, связан полностью с гуманитарными науками. Логика, например, преподавалась на философском факультете, когда я был в университете. Процесс, используемый при проектировании и написании компьютерных программ, почти полностью идентичен тому, который используется, чтобы сочинять и писать книги. Процесс программирования совсем не связан с теми процессами, которые используются для решения математических уравнений.
Здесь я делаю различие между информатикой (computer science) — математическим анализом компьютерных программ — и программированием или разработкой программного обеспечения — дисциплиной, интересующейся написанием компьютерных программ. Программирование требует организационных способностей и языковой подготовки, а не абстрактного мышления, необходимого для занятий математическим анализом. (В университете меня заставили проходить год на лекции по математическому анализу, но я никогда из него ничего не использовал ни на занятиях по информатике, хотя для них матанализ был необходимым условием, ни в реальной жизни).
Я как-то получил открытую рецензию на книгу, посвященную мной предмету проектирования компиляторов, в которой рецензент (который преподавал в одном из ведущих университетов) заявил, что он "считает абсолютно неуместным включение исходного кода компилятора в книгу о проектировании компиляторов". По его мнению, необходимо учить "фундаментальным принципам" — лежащей в основе математике и теории языка, а детали реализации — "тривиальны". Первое замечание имеет смысл, если у вас создалось впечатление, что книга написана ученым-специалистом по информатике, а не программистом. Рецензент интересовался лишь анализом компилятора, а не тем как его написать. Второе замечание просто показывает вам, насколько изолировала себя научная элита от реального труда программирования. Интересно, что основополагающая работа по теории языка, сделавшая возможным написание компиляторов, была выполнена в Массачусетском технологическом институте лингвистом Наумом Хомским, а не математиком...
(Ален Голуб)

Программирование как высшая форма творчества

... работая психологом в крупной компании, занимающейся разработкой больших программных проектов, невозможно не общаться с программистами, чем я обычно и занимаюсь. Многие из моих друзей -- именно программисты, так что мое мнение в первую очередь основано на их взглядах на жизнь в целом и на свою профессиональную деятельность в частности.
...
Так мы приходим к пониманию того факта, что слово "программист" вовсе не является синонимом определения "прикладной математик", хотя многие и не чувствуют разницы между этими понятиями. Например, Пол Хольцер (Paul Holtser -- прим. пер.), мой хороший приятель, говорит буквально следующее: "Я не использую в своей работе практически ничего из изученного в университете. Математический анализ и прочая абстрактная математика не дают мне способов написания элегантного и компактного кода программ. Возможно, для людей, поставленных перед необходимостью программирования узкоспециальных задач в области математики, эти знания могли бы пригодиться, но мы всё-таки работаем не над отображением трехмерных графических сцен, а занимаемся задачами другого уровня... Могу честно признаться, что занимаюсь программированием не с точки зрения практикующего математика. Напротив, я выполняю работу лингвиста -- переводчика с повседневного языка на компьютерный, объясняя компьютеру, что и как нужно выполнить, чтобы прийти к желаемому результату".
Что ж, в сочетании с тем, что Пол считается отличным программистом и лидером многих проектов, его слова нельзя попросту отбрасывать.

... обычный программист -- не столько математик, сколько лингвист и философ в одном лице, активно применяющий положения формальной логики.