Задачи с олимпиад - это кто-то пошутил.
Хотя было бы здорово. _Начинать_ надо с простого.
Паскаль я не советую. За последние 10 лет ни одному работодателю, с которым мне пришлось общаться, паскаль не был нужен. У меня в резюме паскаль записан в конце строки вместе с basic, rexx и прочей экзотикой, чтоб строка казалась длиннее.
Что касается вирусов, то раньше вирусописательство было высшим пилотажем, до уровня вирусов надо было расти года три, если конечно тебя не родители кормят. Сегодняшние вирусы в большинстве - убогие громоздкие программы чуть ли не на визуал бейсике, которые пишутся только для гнилого обкрадывания на бабло. Лучше заделайся пушером, быстрее и надежнее разбогатеешь (шутка). Впрочем даже для современных вирусов нужно расти пару лет, и здорово разбираться в особенностях работы ОС. Если это тебя до сих пор не торкнуло, скорее всего уже никогда не торкнет. И вообще, оставь эту стезю китайзам и индузам, русский человек по натуре создатель, а не разрушитель. Когда вирусы были произведением искусства, ими было интересно заниматься; эти времена прошли.
Далее, логика в любых алгоритмических языках одинаковая. Вообще для программера новый язык программирования - задача на две ночи. Познакомиться с операторами, конструкциями, работой с данными, scope и все. Поэтому что си, что паскаль, что php, что ActionScript - примерно все едино. Кроме бейсика, практику переходов на метки goto надо выкорчевывать в младенчестве. (так сделано, кстати, в скрипте волкера, если тебе это что-то скажет) Поэтому какой язык ты выберешь, в принципе, не важно. Ну разве что си более растиражирован как по синтаксису, так и по построению. Но в среднеуровневых языках (си, паскаль) очень много геморроев с неподготовленностью среды для человеческой работы. Только когда я писал скрипт для l2ph я понял, как их ненавижу, и как я привык к нормальной среде работы. Чтобы на паскале сделать массив переменной длины надо ВЫЕ..ТЬ себя во все места с этими ублюдскими списками, указателями и прочей хренью. Я больше времени воюю со средой, чем собственно решаю задачу. Разумеется, прога на паскале будет работать быстрее, чем на пхп, благодаря прямой работе с памятью и компиляции, но на современных компах это не существенно совершенно. (если ты конечно не занимаешься хардкором, например пишешь сервер для ММОРПГ
) Оно было полезно, когда на компе было 640 кб памяти. Сейчас все это самотрах. В принципе, хорошо знать алгоритмы, это полезно, но лично я не делал сортировку пурырьком много лет - потому что не нужно. В любом языке программирования высокого уровня, который используется для практики - AS, php, perl, JS - все это уже есть. И массивы-хэши, и сортировки-инверсии, и строковые выражения (вот уж проклятие для программера - поиск сложной подстроки) и прочие изыски, а поворот матрицы вдоль главной диагонали - это встречается раз в два года. Так что значительная часть "алгоритмов" - это знание, котрое никогда не лишнее (так можно сказать про любое знание), но которое все меньше и меньше востребовано. Тут хорошая параллель с письмом - люди все меньше пишут от руки, и мы с вами еще увидим, как это умение отомрет. Знание алгоритмов нужно программерам - профессионалам, человеку же, программирующему от случая к случаю - баннер там, на JS сделать подсветку на сайте - это нах не сдалось. Я когда студентам рассказываю про двоичную систему счисления, сдвиги да сумматоры (это проходит как тема, не имеющая прямого отношения к делу, просто при рассмотрении списка орператоров, будет некрасиво пропустить сдвиги, вот и приходится), они смотрят на меня широкими глазами, типа бодже мой, неужели это занудство нужно для работы??? Нет, забейте.
Итак. Лично я бы выбрал что-нить не шибко сложное (т.е. не сразу строгое ООП - ява, AS3), и не шибко древнее (pascal, c, basic), а что-то среднего уровня, чаще востребованное, то что будет актуально на практике для человека, не планирующего связать с программированием свою жизнь. Это Javascript (ajax), ActionScript 1/2(Adobe Flash) или php, если намерен программировать для веба. ActionScript мне кажется наилучшим выбором, т.к. Flash это
- современно (сейчас такой момент, что надо выбирать, на кого ставить - на гугл (ajax), на эдоби (flash) или на MS (.net, silverlight)) Одна из этих платформ вскоре будет править миром. Я бы поставил на гугл с эдобом, эта связка мне кажется наиболее жизнеспособной, кроме того actionscript это
- несложно
- совместимо с Javascript
- результат быстро и наглядно виден (flash - мультимедиа компилятор по определению)
- навалом литературы
- обустроеный api (массивы, хэши, развитое ООП - последнее НЕ ОБЯЗАТЕЛЬНО, как в яве, а ЕСЛИ ХОЧЕШЬ, что по нынешним временам большая редкость)
Ну и если все-таки хочешь глубоких знаний, близких к академической школе, тогда бери си. Я предпочитаю его паскалю из-за широко растиражированного синтаксиса, отсутствия ИДИОТСКОЙ НИЧЕМ НЕ ОБОСНОВАННОЙ болтливости, а возможности там те же. После си паскаль изучишь за два-три дня. Впрочем, если начнешь с паскаля, то и си потом изучишь за два-три дня
(Наверное)
А вообще, я когда перешел от сей-паскалей к языкам действительно высокого уровня (тогда это был REXX), я обалдел от счастья. Это как десять лет учиться в темноте и занудстве монастыря, а потом вырваться на простор огромной страны с побережьем. Школьную же тригонометрию я почувствовал "печенками" только когда занялся flash-ем. Вся эта заумь наполнилась понятным, разумным и красивым смыслом.
Такой вот будет краткий совет.