З якої мови вивчати програмування?
Розмовляв нещодавно зі школярем на тему: який мова програмування він збирається вивчати. Буду, каже, вивчати PHP або С ++. Питаю: а хто тобі порадив саме їх вивчати? - Так хтось із друзів ...
Ну що на це сказати? Якщо почати з цих мов (PHP, взагалі-то, важко назвати мовою програмування в класичному сенсі), то я сильно сумніваюся в результатах. Тим більше, що радив, швидше за все, такий же «грамотій», як і той, з яким розмовляв я.
Так що сенс у такій статті є. Наводжу короткі характеристики тих мов, які я викладав протягом ряду років.
BASIC - Мова найбільш простий для початкового знайомства. Його освоюють не тільки ті, у кого добре розвинене математичне мислення. Я його викладав як початковий мову програмування. Тому що в ньому немає необхідності описувати типи змінних, він більше схожий на звичайні математичні рішення. Для олімпіад підходить до міського рівня, але не вище.
PASCAL - Вимагає певного математичного мислення, але цілком підходить для початкового вивчення. В даний час є досить багато літератури, доступної для школярів. Олімпіадне програмування зазвичай відбувається на ньому. Це мова, якою я веду викладання.
Сі - Мова професійного програмування. Для початкового вивчення не рекомендується. Його можна вивчати після грунтовного знайомства з Паскалем. Але потрібен він лише для рівня міжнародних олімпіад, ну може мати переваги для деяких класів задач на рівні російських. З літературою по ньому, доступною для школярів, я не знайомий.
Delphi - В консольному варіанті це Паскаль, може використовуватися на олімпіадах. В об'єктно-орієнтованому варіанті не використовується на олімпіадах. Для початкового навчання не рекомендується, також як і інші ООП мови програмування. Я проводжу пару занять з Delphi в кінці курсу, але виключно для того, щоб у моїх учнів не було комплексу неповноцінності при спілкуванні з «распальцованнимі» вискочками.
Асемблер - Насправді, правильніше говорити асемблери, т.к. для кожного типу процесорів асемблер свій. Для початкового вивчення категорично не рекомендується. Його як перша мова може освоїти тільки електронщик, детально знайомий з роботою цифрової техніки. В Інтернеті я зустрічав пропозиції починати з асемблера, але це не більше ніж стьоб.
Загальні зауваження: мови програмування розрізняються синтаксисом, тобто способом вираження думки програміста. Головне не синтаксис, а алгоритмічне мислення. Якщо його немає, то немає і навички програмування. Якщо вироблено алгоритмічне мислення, то перехід з однієї мови програмування на іншу не настільки вже й проблематичний. У багатьох школах викладання ведеться BASIC-е просто тому, що інших мов викладачі не знають, а ті хто знають, працюють програмістами і нісенітницею (на кшталт викладацької діяльності) не займаються.
Висновок: починати вивчення треба з TurboBASIC або TurboPASCAL. Підкреслюю, що з турбо-варіантів. Вивчення починати після знайомства з алгеброю. Як варіант допустимо вивчення програмування до знайомства з алгеброю, але тоді на прикладі мови програмування BASIC вводити алгебраїчні поняття. Але це в тому випадку, якщо йде індивідуальне навчання.
Моя практика показує, що раннє навчання, як правило, неефективно. Правда, зустрічаються діти з винятковою (високої) мотивуванням, для яких загальні рекомендації не працюють. Але це дуже рідко. Якщо у дитини є явновираженние математичні здібності, то можна починати з PASCALя, якщо ні, то краще починати з BASICа. Якщо є бажання познайомитися з користувальницькою аспектом (без серйозного вникання в синтаксис), то можна знайомитися з EXEL (без макросів).
Усім і кожному програмування не потрібно взагалі. Для загальної освіти досить знати комп'ютер на рівні користувача. Вивчення мов програмування - це серйозна праця, що вимагає великої концентрації уваги, тому насамперед треба чітко знати, чого ви хочете. І найголовніше, чого хоче дитина. Чи це глибокий інтерес - і тоді потрібен серйозний підхід, чи це поверхневе бажання ... У разі глибокого бажання треба налаштовуватися на серйозну працю і не на один рік.
Ще раз повторюся, що не на програмуванні світ клином зійшовся. Життя різноманітне, і цілком можливо, що ваша дитина знайде себе в абсолютно іншій області. Займатися програмуванням - означає приректи себе на вічне учнівство. Зараз ті мови програмування, які ми вивчали в університеті (30 років тому), можна знайти, як правило, в розділі історія обчислювальної техніки. У той же час програмування - процес творчий і займатися ним цікаво (мені так точно). Бажаю успіхів в освоєнні цього предмета. Від простого до складного.