COMMON LISP як перша мова програмування

Вітаю. Вибираю першу мову програмування. З чого розпочати свій шлях? (Будь ласка, хоча б із короткою аргументацією.)

Мої цілі (у порядку зменшення пріоритетів): 1. Стати якісним програмістом. 2. Програмувати для душі (на зразок піаніста, який грає у вільний час для душі на березі моря) речі, пов'язані з наукою, аналітикою, великими масивами даних, моделюванням процесів (економічних, наприклад). 3. Заробляти гроші.

COMMON LISP як перша мова – це хардкорно. Потрібно розуміти, що Лісп - це не зовсім звичайна мова програмування - вона надзвичайно потужна і виразна, але новачок навряд чи зможе це оцінити і зрозуміти. До того ж, саме стандарт CL для вивчення не простий, та й я не сказав би, що почавши писати на CL можна відразу знайти хороші бібліотеки на всі випадки життя.

Найкраще почати в Python - досить просту мову, величезну спільноту, безліч готових бібліотек та фреймворків. Не варто недооцінювати ці три фактори при виборі першої мови - дуже неприємно кинути все, бо щось не розумієш якісь ідеї, на яких мова заснована, при цьому немає спільноти, яка готова допомогти і відповісти на запитання, а писати свої перші проекти. набагато приємніше, коли потрібно розробляти з нуля потрібні, але нетривіальні у реалізації речі (обробку http-запитів, створення GUI і ORM для бази даних).

Потім, якщо дуже хочеться працювати саме з лиспами - найкраще почати з SICP і Sheme, а потім вже подивитися у бік сучасного діалекту лиспа - Clojure (Clojure я б новачкові відразу точно не порадив, бо вона заточена на розробку багатопотокових додатків, що саме по собі є досить складною та великою темою).

@tuccar: а ось це питання навіть більш холіварне, ніж перше:) Я б порадив почати з Пітона. Він у рази простіше + він абстрагує програміста від багатьох проблем, які постійно виникатимуть у новачка в Сі і досить сильно тиснути на психіку. У Сі потрібно уважно стежити за виділенням пам'яті, виходами за межі масивів, та й багато чим ще, що в Python'e зробить за програміста саме середовище виконання.

Як я вже вище писав - в Пітон з коробки доступна купа бібліотек, а ще більше можна доставити через pip. І можна досить легко знайти і подивитися їхній вихідний код, хоча для Сі відкритого коду теж вистачає, насправді.

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

Таким чином, у Пітона термін з моменту "почав вивчати мову" до моменту "написав першу осмислену і корисну програму" менше, ніж у випадку з Сі. І це насправді набагато сильніше мотивує продовжувати навчання, ніж вивчення тонни теорії, застосування якої найближчим часом не передбачається.

Але тут є нюанс - якщо Ви налаштовані серйозно пов'язати своє життя та кар'єру з програмуванням - можливо варто почати саме з Сі. Так можна зрозуміти, що саме відбувається в програмі - як виділяється пам'ять, що таке посилання та покажчики, як все це добро представляється в асемблерних кодах та багато іншого.

Але моя думка - для старту все це знати не обов'язково, краще направити свої перші кроки на те, щоб зрозуміти, що являє собою програмування і Computer Science. Краще спочатку розібратися з імперативною та функціональною парадигмами,з ООП, з алгоритмами зі структурами даних, і мати можливість отримані знання відразу ж застосовувати якоюсь мовою програмування. А вже потім, освоївшись з високорівневими абстракціями, можна спуститись на рівень нижче і подивитися, що ж стоїть за всім раніше написаним кодом.