Много раз на форумах и чатах я слышал один и тот же вопросс снова и снова. "Какой язык программирования мне учить?" Ответ был разным для каждого кто хочет выучить язык программирования. Эти советы изложены в этой статье для того чтобы помочь людям которые хотели бы начать програмировать и хотят выбрать их первый язык программирования. Итак, возьмите ручку и лист бумаги, и приготовьтесть сделать несколько заметок.
Сперва вы должны сесть и подумать, какую цель вы хотите достигнуть при помощи программирования. Хотите ли вы делать стабильные веб-приложения, или может быть быстрые приложения для Windows чтобы считать количество краски для покраски комнаты?
Как насчёт создания видео игр или ваших собственных операционных систем? Возможно вы хотите альтернативу чтобы попробовать все это, если же вы хотите что то одно из перечисленного выше то есть язык программирования который Вам подойдёт.
Вам нужно просто определиться, чего Вам не хватает и чего вы хотите. Изучите описания популярных языков программирования и выясните что они предлагают.Затем Вы должны определиться с уровнем сложности который вы хотите освоить. Никогда не бойтесь пропробовать что-нибудь сложнее, чем по-вашему мнению Вы можете осилить.
Если это слишком для Вас, то Вы поймёте это достаточно рано чтобы начать учить другой язык программирования и не тратить своё время попусту. Все языки программирования имеют одни и те же корни. Вы сами это поймёте когда научитесь программировать.
Другой аспект, который Вам нужно рассмотреть перед тем как учить определённый язык программирования, это совместимость. Вы хотите чтобы Ваши приложения работали на Windows, Linux, Mac? Или же Вам достаточно совместимости (приложений) с Windows или другим окружением? В большинстве случаев это будет лёгкий выбор.
Начинающие восновном Выбирают язык программирования, который будет работать на их текущей операционной системе.
Можете ли Вы найти много информации по языку программирования который Вы выбрали? Какие типы книг, интернет руководств, и документации доступны для языка программирования который Вы выбрали.
Вам нужно что-то, откуда Вы будете брать информацию и документация основное место откуда Вы будете черпать информацию.
Хотя всегда хорошо иметь сообщество (которое разбирается в языке который Вы выбрали), большинство онлайн сообществ это форумы, IRC, и "Жаба"
Помните что Google тоже Ваш друг. Найдите руководства, книги и сообщества(форумы etc).
Тип языка программирования также важен. Существует три главных типа языков программирования(возможно и больше). Первый тип это языки Web программирования. WEb языки, это коды которые создают веб приложения.
Когда Вы открываете Ваш internet-браузер, например IE или FireFox, он читает этот код, и отображает сайты базированные на инструкциях к браузеру.
Второй тип - это интерпретируемые языки. Многие Web языки также входят в эту категорию. Интерпретируемый язык, это язык, код которого обрабатывается и выполняется компьютером.
Третий тип - компилируемый язык программирования, является отличным от второго. Компилирование приложения, значит что вы должны "пропустить" исходный код приложения через специальную программу, называемую "компилятором".
Компилятор кодирует читабельный исходный код в код из единиц и нулей, читабельный для компьютера. Затем приложение можно запустить и тестировать.
Также мы бегло пройдёмся уровням языков программирования. Компьютер не понимает исходный код, а понимает только код из единиц и нулей.
Когда о языке говорят как о "низкоуровневом" то это значит что его исходный код больше связан с кодом из нуля и есдиниц. Если язык "высокоуровневый", то это значит что его исходный код ближе к читабельному.
Преимущество низкоуровневого программирования заключается в его скорости и мощности. Проблема в том что вы не захотели бы программировать всю видео игру на низкоуровневом языке, потому что код будет очень длинным и тяжёлым к пониманию.
Не делайте большое ударение именно на выборе языка программирования. Если это Ваше хобби пробуйте любой язык который Вам понравился. Если же Вы хотите стать программистом или внедрится в среду информационных технологий, выбирайте язык который поведает вам больше о программировании.
Существует вероятность что это не последний язык программирования который Вы освоите. Как только вы освоите основы и техники программирования, Вы сможете легко выучить новый незнакомы для Вас язык программирования.
Самое главное заключается в том, что вы должны наслаждаться тем что делаете. Если же нет то зачем тогда всё это?
Обзор языков программирования.
Теперь я сделаю обзор нескольких популярных языков программирования. Также я захвачу несколько Web языков. Также Вы должны заметить что это не совсем языки программирования. Некоторые являются языками скриптов, другие же языки "разметки". Это не полный обзор этих языков. Вы должны более обширно рассмотреть тот язык который Вас заинтересовал.
Это не полный список языков! Я старался включить большинство языков, но их так много, что список был бы слишком большим и приводил бы новичков в замешательство. Для полных списков пройдите по следующим ссылкам:
Popular programming languages
http://en.wikipedia.org/wiki/Alphabe...ming_languages

* = я бы посоветовал в качестве хобби или новичкам.
** = советую студентам для более глубокого изучения.

Web-приложения

* HTML
Тип: язык разметки
Уровень сложности: лёгкий
Инструмент для: Веб приложений
Совместимость: Работает с любым браузером и операционной системой
Документация: Много онлайн руководств. Не вижу потребности в покупке книги.
Ссылки:W3Schools Online Web Tutorials
Заметки: Всё что Вам потребуется это приложение "Блокнот" и веб-браузер.

*СSS
Тип:Разработка стиля страниц
Инструмент для: Веб приложений
Уровень сложности: Лёгкий
Совместимость: Работает с большинством современных браузеров.
Документация: Много онлайн туториалов. Не помешает купить книгу.
Ссылки:W3Schools Online Web Tutorials
Заметки:Всё что Вам потребуется это приложение "Блокнот" и веб-браузер.

Javascript
Тип: Язык скриптов
Инструмент для: Веб-приложений
Уровень сложности: средний
Совместимость: Кроссплатформенный. Обрабатывается браузером.
Документация: Хорошие онлайн туториалы. Не помешает купить книгу.
Заметки:Даёт Веб-разработчикам язык скриптов чтобы работать с веб страничками. Может создавать вылетающие окошки или блоки, или активировать html формы.

PHP
Тип: язык скриптов
Инструмент для: Веб-приложений
Уровень сложности: Средний
Совместимость: Код обрабатывается сервером.
Документация: Хорошие онлайн тутортиалы. Не помешает купить книгу для более глубокого изучения.
Ссылки:W3Schools Online Web Tutorials
Заметки: Хорош для доступа к базам данных.

ASP
Тип: язык скриптов
Инструмент для: Веб приложений
Уровень сложности: средний
Совместимость: Код запускается на сервере.
Документация: Хорошие онлайн туториалы. Не помешает купить книгу для более глубокого изучения.
Links: W3Schools Online Web Tutorials
Заметки: Технология Microsoft. Мощное средство для создания динамичных и интерактивных веб страниц. Код обрабатывается сервером, пользователь не может просмотреть исходный код, что обеспечивает большую(ударение на второй слог) безопасность.

Компьютерные приложения:

*Python
Тип: интерпретируемый
Уровень: высокоуровневый
Инструмент для: всего
Уровень сложности: лёгкий
Совместимость:кросс-платформенный
Документация:Много документации, книг, и веб туториалов.
Ссылки: Python Programming Language – Official Website
Заметки: Лёгкий к изучению, очень мощный. Можно почти всё сделать при помощи этого языка. Хорош для начинающих.

Perl
Тип: интерпретируемый
Уровень: Высокоуровневый
Инструмент для: обработка текстов, CGI скрипты, автоматизирование задач
Уровень сложности: средний
Совместимость:кросс-платформный
Документация:много книг и онлайн туториалов
Ссылки: Perl.com

Ruby
Тип: интерпретируемый
Уровень: высокоуровневый
Инструмент для: Web скриптов
Уровень сложности: средний
Совместимость: кросс-платформный
Документация: достаточно
Ссылки: Ruby Programming Language
Заметки: Плюс в том что имеет адаптацию больше к человеческой структуре мышления чем к компьютерной, тоесть человек легко понимает код.

VB / VB.net
Тип: компилируемый
Уровень: высокоуровневый
Инструмент для: приложения Windows
Уровень сложности: лёгкий
Совместимость: Windows
Документация: Достаточно документации предоставляет Microsoft. Также дополнительную информацию можно найти в книгах.
Ссылки: msdn.microsoft.com/en-us/vbasic/default.aspx
Заметки:Не очень распространённый, но с его помощью можно быстро создать приложение под Windows. Не имеет уважения в кругах программистов.

** С/ С++
Тип: компилируемый
Уровень: средний
Инструмент для: всего
Уровень сложности: средний-высокий
Совместимость: кросс-платформенный
Документация: очень много
Ссылки: C++ Language Tutorial - C++ Documentation C programming.com - Your Resource for C and C++ Programming
Заметки: Уважаемый язык программирования. На то чтобы его понять нужно время, но оно вскоре окупается.

* С#
Тип: компилируемый
Уровень: Высокоуровневый
Инструмент для: всего
Уровень сложности: средний
Совместимость: Родная платформа - Windows, кросс-платформенный
Документация: документации недостаточно
Ссылки: msdn.microsoft.com/en-us/vcsharp/aa336809.aspx
Visual C# 2010 Express | Microsoft Visual Studio
mono-project.com/Main_Page
Заметки:Не напрямую компилируется в машинный код.

Java
Тип: компилируемый
Уровень:высокоуровневый
Инструмент для: всего
Уровень сложности: средний-сложный
Совместимость:кросс-платформеннный
Документация: достаточно
Ссылки: java.sun.com/docs/books/tutorial/
Заметки: Я слышал и плохие и хорошие отзывы. Не думаю что это хороший выбр для новичка.

** Assembly
Тип: компилируемый
Уровень: низкоуровневый
Инструмент для: специфических сфер деятельности
Уровень сложности: лёгкий (но с*к@ объёмный) (с)Хeл
Совместимость: Для каждой архитектуры процессора есть своя версия
Документация: достаточно
Ссылки: webster.cs.ucr.edu
Заметки: Имеет назначение для урезанных систем(что угодно начиная со стиральных машин, заканчивая телевизорами).

Delphi
Тип: компилируемый
Уровень:высокоуровневый
Инструмент для: всего
Уровень сложности: средний
Совместимость: Win
Документация: достаточно
Ссылки: http://info.borland.com/devsupport/delphi/

Prolog
Тип: компилируемый
Уровень: Высокоуровневый
Уровень сложности: сложный
Совместимость:кросс-платформенный
Документация: достаточно
Ссылки: SWI-Prolog documentation

Lisp
Тип: компилируемый
Уровень: высокоуровневый
Уровень сложности: сложный
Совместимость: реализации существуют для большинства платформ
Документация: достаточно
Ссылки: Common Lisp Documentation

Translation by hookman(c)