• COMMON LISP как первый язык программирования. Плюсы и минусы?

    @thenno
    Проектирую, разрабатываю, преподаю.
    COMMON LISP как первый язык - это хардкорно. Нужно понимать, что Лисп - это не совсем обычный язык программирования - он чрезвычайно мощен и выразителен, но новичок вряд ли сможет это оценить и понять. К тому же, именно стандарт CL для изучения не прост, да и я бы не сказал, что начав писать на CL можно сразу найти хорошие библиотеки на все случаи жизни.

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

    Попутно лучше всего читать книги по алгоритмам и структурам данных (Кормен, и, обожемой, Кнут), сетям, ОС и прочим вещам, без которых современное программирование представит невозможно (но это еще более обширная тема, чем затронутая в этом вопросе).

    Потом, если очень хочется работать именно с лиспами - лучше всего начать с SICP и Sheme, а потом уже посмотреть в сторону современного диалекта лиспа - Clojure (Clojure я бы новичку сразу точно не посоветовал, ибо она заточена на разработку многопоточных приложений, что само по себе является достаточно сложной и обширной темой).
    Ответ написан
    5 комментариев
  • Java vs C++. Что полезнее?

    @DancingOnWater
    Про Java не знаю, но я расскажу про C++ и C#, даром что последний сравнивают с Java.
    Макросы, нетипизированные шаблоны, частичная реализация этих самых шаблонов, указатели, константные ссылки, константные методы, перегрузка унарных операторов, разделение памяти на стек и кучу, - это только часть того, по чем я скучаю, программируя на C#.

    С помощью плюсов можно написать программу любой сложности и при этом всегда есть путь, на котором можно выбрать логичный стиль и придерживаться в ходе всей разработки, в C# увы этого нету.

    Также стоит заметить, что C++ не заканчивается на голом синтаксисе и STL, после того как вы познакомитесь с ними перед вами откроется целый мир различных библотек. От того обилия высококласных математических библиотек, что есть на C\C++ (а первый вы совершенно спокойно можете подлинковать к проекту и использовать без проблем) у меня слюны все клавиатуру заливают. А Qt с его сигналами и слотами.... И да, не верьте, что многопоточные приложения сложны плюсах, Qt и C++11 упрощают до предела.

    А когда баловство закончится и вы поймете, что вам надо решать задачи по-серьезнее, то перед вами откроется новый мир: вы начнете изучать компилятор и узнаете много нового о его ключах и возможностях оптимизаций. вы узнаете как можно ускорить свою прогу с помощью SSE, что такое OpenMP и OpenCL.

    Да, C++ строг и беспощаден, его изучение сравни с игрой в шахматы с превосходящим по силе соперником, где любая мелкая ошибка может оказаться фатальной. Но работая на C++ (работая, а не кодя так, чтоб отвязались) вы получите гораздо больше в понимании того, как устроены It-технологии, на чем зиждются и в чем их ограничения.
    Ответ написан
    1 комментарий