Java, C #, Ruby, Python и JavaScript - это, вероятно, большой выбор перед вами.
Java и C # не очень разные языки. Это большое отличие, которое вы найдете от C ++, заключается в управлении памятью (т.е. объекты автоматически освобождаются, когда на них больше нет ссылок). Вы бы выбрали их, если вы заинтересованы в настольных приложениях или увлекаетесь статической типизацией (и вы, вероятно, выберете их в зависимости от того, как вы относитесь к Microsoft и платформе Windows). В обоих случаях вы найдете гораздо более богатые стандартные библиотеки, чем те, к которым вы привыкли в C ++.
Python и Ruby в шаге от статической типизации, в мир, где вы можете вызывать и вызывать методы для любого объекта (и завершать работу во время выполнения, если его там нет). Это и благословение (намного меньше стандартного кода) и проклятие (компилятор больше не может поймать эти ошибки за вас). Опять же, вы обнаружите, что они имеют более богатые стандартные библиотеки и имеют более высокий уровень, чем Java / C #. Производительность является основным недостатком, поскольку Python, как я понимаю, несколько быстрее, чем Ruby. Чтобы выбрать между ними, вы, вероятно, выберете Ruby, если вы заинтересованы в веб-разработке для сообщества фреймворков Ruby on Rails, и в противном случае переходите на Python.
JavaScript еще больше отличается от C ++ в том, что полностью исключает классы. Объекты просто клонируются из других объектов и могут иметь методы и свойства, добавленные к ним во время выполнения. Очень гибкий, но также очень легко превратить в полный беспорядок. JavaScript - единственный реальный выбор, если вы заинтересованы в запуске приложений в браузере, который действительно становится платформой. Стандартные библиотеки вы найдете довольно ограниченными, если вы не слишком много делаете с браузером, но есть довольно много хороших фреймворков, которые заполняют некоторые пробелы.
Некоторые другие интересные, хотя и более нишевые варианты:
- Smalltalk - Более или менее в лагере Ruby и Python, и значительно быстрее, насколько я понимаю. Будьте осторожны: я видел много хороших инженеров, которые изучают Smalltalk и никогда не возвращаются;)
- Objective-C - Когда C стал объектно-ориентированным, C ++ пошел одним путем (статическая типизация), а Objective-C пошел другим (динамическая типизация). Он довольно вдохновлен Smalltalk и имеет хорошую стандартную библиотеку, если вы находитесь на Mac / iPhone. С точки зрения управления памятью, в отличие от всего, что я перечислил, он не является сборщиком мусора (хотя теперь это вариант для Mac OS X 10.5), но он имеет схему подсчета ссылок, которая значительно упрощает жизнь, чем управление памятью вручную.
- Lisp - Я никогда не изучал это самостоятельно, кроме того, что мне было нужно для незначительного взлома Emacs. Насколько я понимаю, библиотеки были хороши в свое время, но, хотя язык остается в высшей степени элегантным, они немного отстали от времени.
- Haskel - Если вам нужен полный отрыв от объектов и классов, Haskel и его функциональный подход - это интересный способ (или Lisp, как указано выше, или F # , если вы в .Net земле). По сути, вы отказываетесь от циклов и переменных в пользу рекурсивного выполнения всего. Занимает некоторое время, чтобы обдумать свое мнение, и, вероятно, не практично для большинства реальных приложений, но его стоит изучить.
- Eiffel - Мне это нравится - Очень чистый синтаксис, разработанный для серьезных систем инженерного типа. Статически такие типы, как C # и Java, и со слабой стандартной библиотекой, но это заставит вас задуматься о дизайне языка и библиотеки классов.
- ActionScript и Flex - Интерфейс программирования для Flash, основанный на том, что похоже на статически типизированную версию JavaScript. Я немного поиграл с этим, и он довольно интересен, если вы заинтересованы в разработке медиа-приложений. Вы также можете выйти за пределы браузера с помощью Flex и перейти на платформу Air для создания реальных настольных приложений.