Найти в Дзене

Фундаментальность

О программировании Все знают, что такое фундаментальные науки — это те, продукция которых не имеет коммерческой ценности. А что такое фундаментальность в подготовке и деятельности программиста? В нулевом приближении это знание команд процессора в представлении Ассемблера и умение их использовать. Как правило, это не продается работодателю. Из моей студенческой практики. На занятия по программированию я откровенно забил. Из-за отсутствия оборудования они проводились "пешим по конному", решали задачки на бумаге. Все, что знал препод, это был Макрокод для Наири-К. На зачет нам выдали задачи и сказали, что завтра — завтра! — мы будем вводить свои решения в реальную машину! Что делать? Меня товарищи снабдили табличкой с системой команд, и я пошел думать. Назавтра предстоял долгий и нудный ввод программы через телетайп, и программа сработала с первого захода. Мне достался метод Гаусса решения систем линейных алгебраических уравнений в простейшем случае хорошо обусловленной матрицы (эти сло

О программировании

Все знают, что такое фундаментальные науки — это те, продукция которых не имеет коммерческой ценности.

А что такое фундаментальность в подготовке и деятельности программиста?

В нулевом приближении это знание команд процессора в представлении Ассемблера и умение их использовать. Как правило, это не продается работодателю.

Из моей студенческой практики. На занятия по программированию я откровенно забил. Из-за отсутствия оборудования они проводились "пешим по конному", решали задачки на бумаге. Все, что знал препод, это был Макрокод для Наири-К.

На зачет нам выдали задачи и сказали, что завтра — завтра! — мы будем вводить свои решения в реальную машину! Что делать? Меня товарищи снабдили табличкой с системой команд, и я пошел думать. Назавтра предстоял долгий и нудный ввод программы через телетайп, и программа сработала с первого захода.

Мне достался метод Гаусса решения систем линейных алгебраических уравнений в простейшем случае хорошо обусловленной матрицы (эти слова я узнал позже) фиксированного размера. Я старательно распределил оперативную память, и в некоторых ее ячейках у меня лежало то, что называется (я узнал много позже) указателями. Даже массив указателей на начала строк. Так что указатели — не придуманный кем-то нарочно ужас-ужас, а вполне естественная вещь, неизбежно возникающая при желании сделать программу более-менее эффективной.

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

В общем случае фундаментальность — это знание и умение программировать на один уровень ниже того, на котором работаешь за деньги.

Я никогда не был профессионалом, но когда я преподавал Turbo Pascal для DOS, понимание того, как это происходит на уровне Макроассемблера
(int 21h, int 10h), и опыт программирования на нем играли значительную роль. Придавали уверенность и умение предсказывать, а что будет, если... К сожалению, попытки передать это понимание студентам успехом не увенчались.

32-хразрядный Ассемблер, со всеми моделями памяти, я уже глубоко изучать не стал. Два уровня, фундаментальный и рабочий, стали выше.

Когда мне пришлось, подрабатывая понемногу, писать на PHP, представление о том, на каких шаблонах из STL C++ это основано, помогло все лучше понять и с успехом использовать.

Саму STL я смог понять только тогда, когда прочитал и разобрал некоторые файлы-шаблоны STL, написанные на обычном С++. В процессе работы над проектом Polynomial я постепенно дошел до представлений и решений, которые, как мне кажется, при своем развитии могли бы превратиться во что-то похожее на STL — если развивать это все в направлении универсальности.

Опираясь на этот опыт, я смею утверждать, что если вы хотите программировать творчески, а не просто приспосабливая к своей задаче чужие коды, нарытые где-то на форумах... Если вы хотите уметь разрабатывать что-то принципиально новое, а не просто "на какую кнопку нажать, чтобы выскочила денежка"... То вам надо иметь фундаментальную подготовку.

К сожалению, как невозможно понять, что такое образование, не имея его, точно так же пользу фундаментальной подготовки невозможно оценить, не имея этой подготовки. И остается только завидовать "более удачливым" коллегам.

Желаю успехов в трудном, но, безусловно, полезном деле собственного образования.