Фриц Моисеевич Морген (fritzmorgen) wrote,
Фриц Моисеевич Морген
fritzmorgen

Обучение программированию или преступление «Майкрософт»



Наглядно о программировании. На видео к посту вы можете наблюдать, как некий программист пишет за четыре минуты вполне работоспособный тетрис. Это не трюк: тетрис и тому подобные игры действительно можно написать очень быстро — за час-два, если делать всё медленно, аккуратно и без подготовки.

Самым настоящим преступлением корпорации «Майкрософт» я считаю создание Visual Basic. Настоящий «Бейсик» был простым, как карандаш. Человеку старше пяти лет не нужно учиться пользоваться карандашом — он просто берёт карандаш и начинает что-нибудь рисовать на бумаге. Ровно так работал и «Бейсик» прошлых лет — неподготовленный человек мог сесть за клавиатуру и немедленно начать программировать.

Простенькая программа типа вывода на экран чисел Фибоначчи или движущегося прямоугольника создавалась за 10 минут, потом начинающий «программист» втягивался в процесс, и уже через несколько часов становился способен на более сложные вещи. Кривая обучения была не просто пологой: она практически отсутствовала, ворота в программирование были распахнуты настежь, оставалось только в них войти.

Корпорация «Майкрософт» взяла тот простой, первозданный «Бейсик» и уничтожила его.

Продемонстрирую весь ужас ситуации на примере. Допустим, я работаю в Word, в который встроен Visual Basic от «Майкрософт», и мне хочется сделать элементарный макрос, программу для обработки текста. Предположим, мне часто приходится заменить в тексте «--» на полноценное тире, и я хочу, чтобы «Ворд» делал это автоматически при нажатии сочетания клавиш «Alt+2».

Если бы в «Майкрософт» работали нормальные специалисты по интерфейсу, они бы сделали кнопку «макросы», нажав на которую я бы мог ввести на чистом экране примерно следующее:

Alt+2: REPLACE «--», «—»


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

В реальной жизни, увы, «Майкрософт» сделал всё на два порядка сложнее. Нужно забраться в какие-то дебри настроек, хитрым способом привязать комбинацию к кнопке на экране, а потом написать примерно так:

Sub Replace_minuses
  Dim oDoc As Object, xText As Object, xTextRange As Object

  oDoc = ThisComponent

  FandR = oDoc.createReplaceDescriptor
  FandR.searchRegularExpression = true
  FandR.SearchCaseSensitive = true

  FandR.setSearchString("--")
  FandR.setReplaceString("—")
  oDoc.ReplaceAll(FandR)

End Sub


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

Вместе с тем абсолютно очевидно, что новичок проследовать таким путём не сможет. Сравните первый кусок кода со вторым. Начать программировать на первом языке можно за несколько минут. Для изучения основ второго языка, реального Visual Basic от «Майкрософт», потребуется несколько часов, сравнимых по мучительности с часами, проведёнными в кресле плохого стоматолога.

Билл Гейтс любит хвастаться тем, что открыл компьютеры для широких народных масс, сделав общение с компьютером простым, как переключение каналов в телевизоре. Отчасти он прав, однако конкретно создание Visual Basic произвело обратный эффект: отвратило от программирования миллионы людей, провалившихся при попытке создать элементарный макрос для облегчения ежедневной работы в «Ворде».

Как можно понять из видео к посту с созданием «Тетриса», некоторые входные барьеры есть и в более продвинутых языках программирования, типа того же C++, код которого мы имеем удовольствие наблюдать на экране. Вы не можете вот так с разгону взять и начать писать код, как это было 30-40 лет назад с «Бейсиком». Вначале вам всё же придётся потратить часок-другой на изучение основ языка, причём не «методом тыка», а при помощи какого-нибудь руководства.

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

Немного поднаторев в этом деле вы сможете заняться уже более серьёзными вещами: или создать что-нибудь действительно нужное, или даже перейти в разряд начинающих, но профессиональных программистов — окончить курсы и начать зарабатывать деньги.

Вместо завершения поста отмечу три вещи.

1. Никакого обмана в видеоролике нет: опытные люди действительно программируют очень быстро. Вместе с тем, я бы рекомендовал выбрать для опытов не довольно специфичный c++, а более современный html5 (для зануд: JavaScript + HTML5), который не нужно ставить, так как он работает сейчас практически в любом браузере. Вот, например, самоучитель, при помощи которого за час-другой можно научиться делать «арканоид»:

https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it

2. В современном мире карьера программиста не выглядит однозначно хорошим выбором. Хорошим программистом стать сложно, плохих же и средних программистов скоро с большой долей вероятности заменят роботы. Впрочем, с другой стороны, в современном мире вообще не так-то много надёжных профессий — нам повезло жить в эпоху перемен.

3. Кроме серьёзных вебинаров, курсов и тому подобного есть сейчас и игровые способы быстро научиться основам программирования: сайты code.org и codecademy.com, например, интерфейс которых переведён уже на русский язык.

PS. Нет, это не первоапрельская шутка. Не нужно искать тут подвоха, всё вполне серьёзно.

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 325 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →