Блог пользователя dkirienko

Автор dkirienko, 14 лет назад, По-русски

По просьбе AWPRIS решил написать хронологию своего знакомства с языками программирования. Не могу при этом однозначно ответить на вопрос "Сколько времени понадобилось на изучение того или иного языка программирования", вот, например, Питон я изучаю до сих пор, то есть уже лет 9 - например, множеств в Питоне тогда вообще не было, а словарями я начал активно пользоваться только в последнее время.


Итак, хронология.

Классе в 6-7 купил книжку К.Боон "Паскаль для всех", начал читать, дошел до арифметики с плавающей точкой и на этом застрял. Компьютера у меня тогда не было. Первый опыт окончился ничем - только книжка сохранилась.

1991-1993 год (школа, 8-9 класс) - Бейсик, в 8-м классе на Корвете, в 9-м классе уже в другой школе на БК-0010.

1993 год - вернулся из летней школы, очень воодушевленный с тягой к знаниям. Достал книжку по Паскалю, прочитал за неделю лежа на диване, пришел в школу и стал писать на Паскале. Два года (10-11 класс) писал только на Паскале.

1994 год - узнал, что есть "крутой и настоящий" язык Си. Купил толстую книжку по Си, прочитал, в принципе, мог писать на Си, но язык мне не понравился, в результате на Си я почти не писал.

1995 год - в университете на Паскале писать было нельзя... Пришлось переходить на Си и С++. Мне Си/C++ не нравился, но в итоге, как я обычно говорю, меня "заставили полюбить C++". С тех пор С++ стал на многие годы моим любимым и основным языком, впрочем, эффективно использовать STL я так и не научился (возможно потому, что тогда STL был еще не столь крутым).

Где-то после 2000 года - понял, что для каких-то задач мне нужен Perl. Освоил Perl - на неглубоком уровне, но достаточном для нужных мне задач. Perl мне тоже нравится, ну скорее как развлечение вида "О, посмотрите, какое извращение можно написать на перле".

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

В итоге на сей момент я использую довольно регулярно три языка - Питон, С++ и Perl. Правда, я не занимаюсь программированием профессионально. Я так и не освоил Java, C#, функциональные языки (хотя чужой код на Java мне приходилось править), поскольку не было причин для изучения этих языков.

Также в этот список включены только те языки, которые в моей жизни сыграли достаточно серьезную роль, при этом писал я еще на много чем - и web-сайты делал на ASP и PHP, и курсовик писал на Maple, и перебор перестановок кодил на ассемблере, но все это в итоге оказалось несерьезным .
  • Проголосовать: нравится
  • +2
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится
Спасибо, что отозвались на просьбу и более того вынесли в отдельную тему - это заслуживает того.

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

Но собственно пишу не по этой причине. Причина в том, что при всех преимуществах Питона его первым изучать скорее всего не стоит и лично я пока честно признаюсь боюсь его давать ученикам.
Сначала Паскаль или в крайнем случае С++, а потом уже по-любому С++ и язык на выбор ученика, правда есть один ньюанс - хотя бы HTML ученик должен также изучить.

Это я говорю чисто с практической точки зрения, ибо давно пришёл к выводу, что любой язык программирования, как и иностранный, после третьего уже изучается легко. Да и "школу" базовые алгоритмы нужно тоже обязательно давать, а потом уже имея за плечами школу учить пользоваться готовыми библиотеками, например в том же С++ или Делфи.

Я никому не навязываю своей точки зрения, просто личная многолетняя практика показывает, что определённые знания в определённый период бывают вредны (как в медицине вредными бывают таблетки от неправильного или чрезмерного употребления).

Ученик должен сам "созреть" к необходимости пользоваться всеми благами мощи библиотек и возможностей современных языков программирования и тогда они ему явно пойдут только на пользу.
  • 14 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится
    Ну вот почему-то когда я начинаю рассказывать про Питон, как первый язык программирования, то профессионалы сразу же начинают говорить именно о том, что нецелесообразно учить пользоваться мощными библиотеками и т.д.

    А мне эта крутая навороченность языка и не нужна особо. Мне нужен язык программирования, который понятней и проще Паскаля и С++. На котором программы - короче и радуют глаз. На самом деле от замены C++ на Питон у меня первый год обучения программированию практически никак не поменялся - только задач школьники стали решать больше.

    Основной принцип такой - сначала школьник должен научиться что-то делать сам, потом он может использовать стандартную библиотечную функцию. Да и на С++ когда я учу детей, точно такой же принцип происходит.

    Посмотрите на http://server.179.ru/~dk/python.html внизу страницы есть ссылки на материалы моего выступления на съезде учителей информатики - там тезисы доклада и презентация о том, чем питон хорош для обучения.
  • 14 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    "Сначала Паскаль"... Честно говоря, не уверен. В школе где я немного работаю часть преподавателей программирования разделяя ваше нежелание "загружать" школьников нюансами C++, но и не желая связываться с Дельфи (по причинам которые кучу раз обсуждались но я их оспаривать или подтверждать не хочу) преподают Java.

    Впрочем я не считаю что это от наплыва "неадекватных программистов" спасёт. Точно также научатся в нетбинс клепать ересь - как на Дельфи или VB... ;-)

    М-да... Ну и надо добавить что мне самому этих школьников приходится учить писать на ассемблере (для AVR) - в расчёте на то что те из них кто знаком с Си впоследствии смогут легче освоить тот или иной сишный компилятор для контроллеров. Не могу сказать чтобы они это на ура воспринимали... Особенно те из них кто независимо от того, на чём они уже умеют писать, плохо понимают суть битовых и логических операций и даже систем счисления.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вот это "не было причин для изучения" языков... Правильно ли я понимаю, что знакомство с другими языками (или другими концепциями языков) просто из интереса вам не близко?

Ничего осуждающего не имею в виду - хотя меня самого забавляет "пробовать" различные, в т.ч. экзотические языки - но я не думаю что это ведёт к профессионализму. Важным подтверждением этого факта, наверное, являются языки типа FALSE или Brainfuck... ;-)

Впрочем важным наследием от "знакомства" с различными языками для меня стало то, что я в крупных задачах иногда успеваю заметить момент, когда писать их дальше на базовом языке (C или Java) становится неадекватно, а пора разработать какой-то мета-инструмент, и уже на нём эту задачу решать.
  • 14 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Нет, цели изучить побольше языков программирования у меня нет.
    И тратить время на изучения языков программирования исключительно ради интереса не хочется.

    На Brainfuck, впрочем, я тоже писать немного умею. Алгоритм Евклида, например, писал :)

    • 14 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Это ужасно... В смысле скиллы в Brainfuck... ;-)

      С точки зрения вообще языков для конечных автоматов - я помню ещё в школе написал интерпретатор который правда не по ленте а по двухмерной поверхности передвигался... И составил программу которая односвязный лабиринт обходит... Но кажется на этом мой интерес исчерпался...

      А вообще не императивные (или как это правильно сказать) языки мы рассматриваем? М-м-м... Имея в виду HTML, SQL, регэкспы (хотя самым декларативным наверное Prolog будет - но вряд ли имеет смысл ему кого-то учить) и т.п.? Нужны они школьникам/студентам или как?
      • 14 лет назад, # ^ |
          Проголосовать: нравится +7 Проголосовать: не нравится
        За языками подобными Prolog возможно и будет будущее программирования - во всяком случае хочется надеяться на подобное развитие.
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Будущее программирования периодически связывают с теми или иными новыми и старыми концепциями. ;-)

          В фидошной переписке мне когда-то кто-то доказывал с пеной у рта что будущее за Scheme, кто-то так же воевал за квантовые компьютеры. Один демонстрировал потрясающе красивую (и не вполне корректную, и потому неэффективную) реализацию быстрой сортировки на Хаскеле... ;-)

          У Пролога на мой взгляд две беды:
          - мало задач для которых он актуален;
          - в остальных задачах программисты обычно сводят Пролог с помощью усечения логических ветвей к обычному императивному образу...

          Я на нём примеры для детей писал, мигающие светодиодами в LPT-порту, чтоб не сдирали решение... ;-)
          • 14 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится +9 Проголосовать: не нравится

            :)
            А было бы классно, чтобы ещё LPT-порт реагировал на поворот головы в сторону списывания и усиливал мигание, а встроенная пищалка при этом начинала угрожающее рычать...
            :)

            • 14 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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

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

              Хотя технические способы, начиная от датчиков, заканчивая отдельными комнатами для каждого сдающего, конечно можно внедрять, но мне кажется что мне самому пока не это надо ;-)
              • 14 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Идея с лидерами и аутсайдерами мне понравилась, но есть пара сомнений: научатся ли аутсайдеры решать задачи и не будет ли скучно лидерам? А так как Вы применяете эту методику, то каков результат?
                • 14 лет назад, # ^ |
                    Проголосовать: нравится +1 Проголосовать: не нравится
                  А моя тайная цель как раз была не аутсайдеров а лидеров таким образом прокачивать. Если человек будет объяснять задачу мне - я его, конечно, в любом случае пойму. А вот если он попытается что-то объяснить беспристрастному аутсайдеру - ха-ха - тут он и сам, может, окончательно запомнит суть задачи...