Многие хвалили мои выпуски за то, что они целиком посвящены тому, что было
заявлено в названии и описании рассылки. Пора исправить эту досадную
оплошность, чему собственно говоря и посвящен настоящий выпуск. Кто еще не
отошел от праздников, пожалуйста не отвлекайтесь, продолжайте
оздоровительные процедуры. Вы не пропустите ничего существенного...
Сразу извиняюсь перед всеми за некоторую... ээээ... сумбурность
нижеизложенного. Просто накопились мысли. И я думаю, многим они будут
небезынтересны.
Об обучении программированию
С вашего позволения - несколько слов об этапах обучения программированию.
[Этот список написан мной в соавторстве с А.В.Слесаренко]
1. Понятия алгоритм, исполнитель, исполняющая система
2. Кодирование - написание программы по заданному алгоритму
3. Кодирование в рамках заданной структуры данных, понятие интерфейса
4. Построение алгоритма в рамках заданной структуры данных по
спецификации функции, заданной в виде "вход/выход"
5. Абстрагирование от конкретной реализации, понятие интерфейса
6. Оценка эффективности по шкале "память/время"
7. Эквивалентные преобразования программ, оптимизация
8. Операции над программами, высокий порядок (метапрограммирование)
9. Понятия избыточности и функциональной зависимости данных
10. Проектирование структур данных и вычислимых функций
Этот список можно было бы продолжить и уточнить, но не суть...
Предполагается, что первому (а лучше даже - и второму) этапу должны научить
в средней школе. Заложить основы, дать основные понятия, которые в
дальнейшем послужат базисом дальнейшего обучения. Реально большинство
узнают об этом на первых курсах ВУЗа.
Приведенный план - эта теоретическая часть обучения. Есть еще и
практическая - конкретные технологии, языки, продукты. Это та часть,
которая подвержена наибольшему изменению. Большая часть этих знаний -
"преходящее". Тем не менее от того, насколько хорошо вы знаете эту
"конкретику" во многом зависит ваш успех "в малом" - то, что касается
конкретного участка кода, конкретного модуля и т.п.
Современный подход к программированию
Один немолодой уже программист рассказывал мне типичную байку о том как
"Пришел тут один, программу принес... Так она два часа считала. А я за час
ее переписал, и она за четыре минуты получила результат!" Я бы сказал что
это типичный пример. То поколение в гораздо большей степени было озабочено
борьбой за ресурсы - быстрее, меньше, производительнее. Отсюда оптимизация
и программирование на низком уровне. "А мы это на ассемблере перепишем!"
Современное программирование состоит в основном в придумывании и реализации
решений, построенных на наборе общеизвестных стандартов и технологий.
Основные технологии и решения у всех на слуху - RDBMS, Client/Server, SQL,
HTML, XML... на слуху в том случае, если вы общаетесь в соответствующих
кругах, а не сидите в запертой коробке.
Главным является то, получен ли готовый результат, можно ли его получить
и за какое время. Если программа работает - об оптимизации речи уже нет.
Отсюда огромное количество средств RAD (Rapid Application Development)
и многообразие компонентных подходов.
Что же отсюда следует?
Если вы собираетесь представлять что-то из себя на рынке труда в разделе
"программист", следует все эти технологии, решения, принципы и продукты
изучать и использовать. Следить за происходящим в мире и в России, как по
части софта, так и по части железа. Отслеживать новые тенденции и следить
куда ветер дует. Ну и о теории нельзя забывать.
Win32 API и Visual Basic
Длительный перерыв в выпусках рассылки был связан во многом с тем, что мне
пришлось осваивать Visual Basic. После многолетней работы на Visual C++ это
было достаточно большим шоком. Самое серьезное, что мешало - это то, что
всякий нестандартный случай требует особога варианта обработки. В отличие
от C/C++ никакого единообразия не имеет места быть. Большинство интерфейсов
страдает своей неполнотой... Но это я отвлекся. Я не хочу сказать, что VB -
это плохой инструмент, нет. Инструмент хороший. Сам подход мне не нравится.
Особое место занимает в VB работа с Win32 API. Я еще помню времена, когда
программировали на языке высокого уровня, а для всяких изысков опускались
во встроенный ассемблер. Тут - то же самое. Сделать можно все. Но для
некоторых вещей вам придется написать множество оберток (wrappers) для
WinAPI-функций и вызывать их в нужном месте в нужное время. Таким образом,
Win32 API выступает как БАЗОВЫЙ интерфейс.
И это справедливо не только для VB. Похоже, примерно тот же подход будет
использоваться и в .NET, хотя с уверенностью я этого пока сказать не могу.
Java
В области информационных технологий прогресс не стоит на месте, более того
- изменения носят непрерывный характер. В силу этого постоянно приходится
осваивать все новые и новые технологии, языки, стандарты и подходы.
Очень рекомендую вам, даже осваивая C++ сразу приглядываться к
"параллельным дорогам".
Одна из таких "дорог" - язык Java (не путайте его с JavaScript - это
совершенно разные вещи). Java - создание фирмы Sun, изначально предназначена
для создания переносимых приложений, в том числе - для Интернет. Его
синтаксис очень похож на C++. Язык этот полностью объектный, на нем уже
очень трудно (если не невозможно) писать в процедурном стиле. Нет глобальных
переменных, функций и даже констант! Все находится внутри объектов, даже
функция main, с которой начинается выполнение программы.
Если у вас есть к этому некоторый интерес - дайте мне знать, у меня будет
что вам рассказать...
Обратная связь
С большим интересом читаю вашу рассылку . В последней рассылке Вы предлагали
читателям проверить свои знания на BrainBench . Так вот , я бы внес такую
поправку . Возможно , читатели захотят таки тестироваться там , если они не
знали об этом центре тестирования раньше . И даже захотят , что совершенно
естественно , получить по почте бумажные копии этих красивых сертификатов .
Я бы посоветовал им поторопиться , потому что с 19 января - сами
сертификаты , т.е. затраты на обработку , печать и рассылку - будут стоить
8 вечнозеленых денег .
А с середины марта - некоторые категории экзаменов будут платные ,
я подозреваю самые популярные , т.е. С , мелкомягкие продукты и прочий
ходовой товар . Возможно все экзамены будут платные , сказать трудно . Вроде
как 25$ , хотя точно опять таки неизвестно.
С уважением , Алекс Воронцов , Израиль .
Следущий выпуск
Краткий обзор C# (Си-шарп) - нового языка программирования,
предназначенного для замены C++ на платформе .NET (dot-net).
*************************************************************************
Количество подписчиков: 7882 Архив Рассылки