Рядовой пользователь на вопрос «На каком языке пишут программисты» не задумываясь ответит, что это C++, Delphi и лишь несколько опрошенных вспомнят Ассемблер. На самом деле языков программирования великое множество. Не бывает универсального языка, подходящего под все задачи, наоборот каждый язык хорош именно в своей области применения. Какой путь выбрать начинающему программисту? Это очень ответственный момент. В идеале он должен знать несколько языков, но для досконального изучения хотя бы одного из них необходимо от полугода до года. Такие знания ценятся в единичных случаях, для остальных работодателей достаточно просто хорошего знания. Хороший программист никогда не останавливается в своем развитии, и всегда готов изучить что-то новое, повысить свою квалификацию. >>>
Компьютерный язык
Компьютер «общается» на одном языке – машинном. Машинный код состоит всего из двух цифр 0 и 1. Единица соответствует высокому сигналу, а ноль – низкому. Естественно, что написать программу, используя этот язык, даже переводя числа в десятеричную или шестнадцатеричную систему, не представляется возможным. Для нормального восприятия кода был придуман Ассемблер. Он полностью повторяет все машинные команды, только обозначает их понятными сокращениями (add – сложить, mov – переместить). Ассемблер совершенно не предназначен для быстрой разработки или масштабного программирования. Код получается очень громоздкий. К примеру, чтобы сложить два числа, необходимо поместить в аккумулятор первое значение, затем подать команду на сложение. Итоговый результат будет храниться в аккумуляторе, затерев предыдущую переменную. Программирование в ассемблере дает самое высокое быстродействие из всех языков, так как каждой машинной команде соответствует своя мнемоника. Размер программы будет минимальным. Но отлаживать код, вносить какие либо изменения крайне тяжело. Приходится «перелопачивать» гору кода, для внесения небольшого изменения и чтобы оно не повлияло на работоспособность программы.
Мнемоника ассемблера не постоянна, могут добавляться новые команды, старые нередко действует отлично друг от друга. Здесь все зависит от архитектуры процессора. Но по своей логике команды ассемблера идентичные.
О программистах и программировании
Лично я разделяю программистов на две категории: логиков и математиков. Первые имеют четкое представление в голове о еще не готовом проекте, а вторые обладают серьезными математическими знаниями. Они могут выходить из физиков, математиков, и уже затем столкнувшиеся с программированием. Обладая такими способностями к расчетам, они, например, легко могут перевести трехмерные объекты в код.
Я отношусь к программистам первой категории. Высшая математика для меня достаточно сложна. Логику удобнее и проще изначально выстраивать на бумаге. Каждый программист, приступая к изучению нового языка, поступает по-своему. Кто-то ищет операторы аналогичные уже знакомому ему языку; кто-то начинает с фундаментальных основ, досконально изучая всю имеющуюся литературу. Изучение нового языка я, если есть такая возможность, начинаю с разработки небольшой программы-игрушки. Уже в процессе ее создания, обращаюсь к справочникам, находя необходимые мне операторы.
Специфика рынка
Тройку лидеров в Америке и Европе уверенно удерживают С/C++, Visual Basic и Java. Разница между ними минимальна. Далее идет самый популярный скриптовый язык PHP. Остальные языки в рейтинге популярности/применяемости отстают достаточно серьезно.
В России ситуация немного другая. VB и Java не имеют лидирующих позиций, они крепкие середняки. Непререкаемыми лидерами являются языки семейства C. Хорошие позиции у Delphi, PHP и Perl. Отметим стабильно высокую позицию в обоих рейтингах сравнительно нового языка – C#.
Довольно интересная ситуация произошла с Delphi. В 2006 году компания объявила о прекращении всех разработок в этом направлении. Новых версий не предвиделось и пессимисты на каждом углу кричали о кончине эры «Дельфи». «Borland» не отказалась от своих намерений и действительно перестала заниматься средствами разработки. В дальнейшем все наработки были проданы другой компании, которая с успехом реанимировала Delphi. Но неприятный осадок остался. При этом C# может рассматриваться как его главный конкурент.
Visual Basic в нашей стране никогда не был на первых ролях. Изначально язык был простым в освоении и имел не очень хороший функционал. «Слишком просто» – говорили одни, «мало умеет» – вторили другие. В итоге переходили на Delphi и C/C++. В настоящее время он вырос в «монстра» мало уступающем по функциональности языку Delphi. А по сложности – реализация многопоточности, работа с периферией, он как минимум, ему не уступает. Активное использование языка продолжается при написании приложений для «Microsoft Office». Используется специализированный VBA – Visual Basic for Applications.
Если объединить все скриптовые языки, то их доля в рейтинге популярности языков будет наравне с лидером или даже обойдет его. Интернет-технологии продолжают развиваться, непременно будет увеличиваться и востребованность данных специалистов. Кроме того, в сети достаточно вакансий на удаленную работу именно по этим языкам.
В крупных городах и регионах РФ самыми востребованными специалистами являются программисты, пишущие на C++ и занимающиеся веб-технологиями. Область распространения C/С++ очень велика, это микроконтроллерная техника, прикладное и игровое программирование. Здесь он далеко впереди всех. Совсем иная ситуация в слаборазвитых, в промышленном плане, регионах. Ввиду меньшего спроса на ИТ-специалистов, здесь нет ярко выраженного доминирования какого-то одного языка. Поэтому могут встречаться самые диковинные их представители. Если в ваших планах значится переезд в другой регион (Москва, МО, Петербург), необходимо задуматься о ценности ваши знаний на новом рынке труда. Опытного специалиста наверняка возьмут и без конкретных знаний, но перестраховаться, немного изучив необходимый язык, никогда не помешает.
Скриптовые языки
Скриптовые языки еще называют сценарными или динамическими. К ним относятся Perl, Python, PHP, Ruby, TCL, Java Script, VBScript и ряд других. Всех их объединяет использование в одной сфере. Почти на 100% скриптовые языки используются в Интернет среде. Для придания сайтам динамических свойств – выпадающие меню, отсылка почты, ответы на вопросы, применяют Java Script и VB Script. Но Java Script более предпочтителен, так как лишь браузер «Internet Explorer» без проблем работает с Basic’ом. Код выполняется непосредственно на клиентском (пользовательском) компьютере. Приложения, написанные на остальных языках, выполняются на сервере, и взаимодействуют с пользовательскими данными. Это существенно снижает нагрузку на клиентский компьютер, как в плане производительности, так и загрузки интернет-траффика. Негативным моментом является то, что в хакерских атаках используются языки данной группы.
Отдельной строкой выделим Action Script, применяемый в флэш-программировании. Использование AS началось с написания простеньких, и зачастую «туповатых», игр. Уязвимым местом языка являлась его скорость. Но со временем, а уже вышла третья редакция AS, проблема была решена. Хоть по быстродействию и возможностям Action Script по-прежнему уступает языкам семейства C, но и на нем можно писать достойные приложения. А по удобству работы с графикой ему нет равных. Поэтому язык можно рекомендовать людям, любящим делать маленькие игрушки. Это может стать вашей отправной точкой в будущем мире игростроительства. Заметим, что есть редкие проекты на Action Script абсолютно не уступающие по качеству программам, написанных на других языках.
Объектно-ориентированные языки
Языки данной группы имеют очень большой процент использования относительно всех остальных. К ним относятся C++, Java, C#.
Язык Java является полностью объектно-ориентированным и имеет синтаксис, схожий с C++. Отмечая преимущества языка перед конкурентами, обычно выделяют его межплатформенность. Я выделил бы его внутреннюю структуру. Он лишен многих синтаксических просчетов присущих C++, в нем меньше ненужных «заморочек» и поэтому писать на нем приятнее. Типичным использованием языка являются интернет-приложения, работа с базами данных, создание сложных пользовательских интерфейсов. С другой стороны Java существенно проигрывает языкам семейства C по скорости обработки графики и в приложениях, требующих сложных математических вычислений.
C++ является прямым наследником языка С. Он имел большую популярность, но когда в нем появился объектно-ориентированный подход (C++), армия его поклонников значительно увеличилась. Благодаря быстродействию и возможностью оперировать на самом низшем уровне он находит применение во всех областях программирования. Конечно, в каких-то случаях удобнее будет применить специализированный язык, но ничто не помешает вам задействовать именно C.
C# – новый язык, опирающийся на C++ и Java. За годы работы с объектно-ориентированными языками произошло некоторое переосмысление принципов построения таких систем. Компанией «Майкрософт» были учтены негативные моменты их использования, например небезопасность кода, и в итоге появился новый язык. В нем постарались совместить простоту использования Visual Basic’а и низкоуровневый доступ к памяти при необходимости. Он был специально разработан для новой технологии .Net. Понятием .Net определяют и библиотеку и платформу – среду в которой исполняется программа. Она, наряду с Java-машиной, служит промежуточным звеном между программой и машинным языком. Написанное приложение преобразовывается в байт-код. У этого метода есть свои достоинства и недостатки. К плюсам отнесем кроссплатформенность, т.е. программа, без каких либо изменений, будет запускаться на ОС Windows, Linux, Mac OS. Но в реальности, это не всегда так. За многоплатформенность приходится расплачиваться меньшей скоростью выполнения программы и необходимостью установки самой платформы. Это существенно снижает область применения языка. Де-факто C# пока прижился только на родной операционной системе. Что мне сильно не нравилось в C++, так это работа с Windows. MFC, пришедшая на смену Windows API, была не намного легче в освоении, а для построения обычной формы приходилось писать несколько строчек кода. Но с приходом новой платформы больше не нужно отвлекаться на подобные мелочи, можно всецело сосредоточиться на программировании. Библиотека .Net получилась удачной и «человеческой», а применять Win API вам придется лишь в крайних случаях.
Микроконтроллеры
Современные электронные приборы, начиная от электронного табло и заканчивая GSM-передатчиком, имеют на своей плате микроконтроллер. Он отвечает за связь с компьютером, спутником, логику управления. Программы для них пишутся на языках ассемблер и C/C++. На российском рынке лидерами среди микроконтроллеров являются марки Avr и Arm. Прежде чем приступать к непосредственному программированию, необходимо изучить datasheet. Это полная спецификация на микроконтроллер. В ней описываются технические характеристики контроллера и «настройки» необходимые для всех команд. Под «настройками» подразумевается конфигурирование входов/выходов, называемых пинами. Например, чтобы открыть порт на запись необходимо установить определенный бит регистра порта. Написать полноценную программу без основных знаний электротехники вряд ли получится. В процессе разработки вы не раз столкнетесь с терминами АЦП/ЦАП, ШИМ, USART/UART. Но не пугайтесь. В книгах по электронике все описывается простым, понятным языком. Вы сами сможете в этом убедиться.
Именно микроконтроллеры являются мозгом робототехники. Если вам захочется заняться этим увлекательным делом, для начала обратите внимание на конструктор «Лего». Причем здесь детский конструктор, спросите вы? Дело в том, что в серии «Lego Mindstorms» присутствует настоящий компьютер, состоящий из ARM7 и AVR контроллеров. Он оснащен датчиками движения, света, громкоговорителем. Связь робота с компьютером осуществляется по USB кабелю и каналу Bluetooth. Она может использоваться при программировании робота и получении данных на ПК с его датчиков.
Микроконтроллерные платы стоят недорого, а программатор можно изготовить самому. Для этого не нужно быть гением электротехники. В сети без труда можно найти специальные сайты, посвященные микроконтроллерам и роботостроению. На них существуют форумы, где с радостью помогут новичкам и подскажут где скачать бесплатный софт. Поэтому не бойтесь, смело берите паяльник в руки и вперед на создание собственного робота.
Программируемые логические контроллеры (ПЛК)
В промышленности применяются свои языки. Всего их пять, они стандартизированы международной электротехнической комиссией и носят общее название МЭК-61131. Программы пишутся для промышленных контроллеров. Лидерами являются «Siemens», «Schneider Electric», «General Electric», «Phoenix Contact». В России «Siemens» является де-факто монополистом. Дело здесь не только в качестве поставляемой продукции. За компанию играют несколько факторов, она была одной из первой пришедших на российский рынок. Благодаря этому у ней самая большая доля реализованных проектов на территории нашей страны и огромная узнаваемость. Говоря «промышленный контроллер» подразумевают «Siemens». Из российских компаний отмечу «Fastwel». Она не так давно занимается разработкой контроллеров, но достигла определенных успехов. Хотя уровня западных коллег не достигла. Промышленные контроллеры предназначены для автоматизированного управления технологическими процессами – автоматический ввод резерва (АВР), включение/отключение приборов при достижении заданных параметров, называемых «уставками», срабатывание сигнализации. Контроллер дополняется специальными модулями – дискретными и аналоговыми. На дискретные поступают и передаются два состояния, соответствующие высокому/низкому уровню сигнала. В программировании соответствует единице и нулю. Аналоговые измеряют поступающее на них напряжение, ток и сопротивление. Подставив приходящие на них значения в специальные формулы можно узнать температуру помещения, влажность воздуха, давление пара и т.д.
Языки семейства МЭК тесно взаимодействуют друг с другом и собраны в одной среде. Стандартом в данной области является пакет «CoDeSys» и на него опираются все остальные разработчики. Большим плюсом системы является симуляция происходящих процессов. Не имея непосредственных объектов (контроллера и датчиков), можно написать полностью работоспособную программу. Правда процесс записи и чтения значений из энергонезависимой памяти контроллера по понятным причинам воспроизвести не получится. Затем в процессе наладки на самом объекте необходимо будет добавить лишь незначительные штрихи. Обычная программа для контроллера пишется на нескольких языках, взаимодействие между ними не доставляет никаких хлопот, т.к. они уже несколько десятилетий вместе.
Стандарт МЭК определяет два текстовых и три графических языка:
IL – список инструкций, по-сути обычный ассемблер;
ST – язык высокого уровня, очень сильно напоминает Pascal;
SFC – последовательные функциональные схемы. Они реализованы в виде последовательно идущих друг за другом действий;
LD – язык релейных диаграмм. Реализует простейшие структуры электрических цепей – ключ замкнут/разомкнут, реле с самофиксацией, инверсия сигнала;
FBD – графический язык функциональных диаграмм. Все действия, выражения и процедуры представлены в виде прямоугольников. На их входа/выхода передаются переменные определенных типов. Информация может поступать и напрямую, с выхода одного блока на вход другого.
Программы для контроллеров называются «нижним» уровнем, они отвечают за логику. «Верхний» уровень – это приложение для визуализации происходящих процессов и одновременно пульт управления. Он занимается сбором данных поступающих на контроллер и отображает их на дисплее. Система функционирует на специальных промышленных компьютерах. В них отсутствует звуковая карта, слабый видеопроцессор, но их надежность на порядок выше бытовых компьютеров. «Верхний» уровень представляет собой Scada-система либо самописная программа. Scada предлагает готовый набор инструментов для связи с контроллером используя разнообразные протоколы, специализированные графические элементы в виде труб, кранов, датчиков и т.п., удобное ведение статистики. Для специфических требований заказчика в системе предусмотрена модифицикация при помощи Basic-подобного языка, для других придется использовать C/C++. В любом случае это гораздо проще, чем самому создавать программу с «нуля».
Языки 4-го поколения (4GL)
Язык Natural разработан немецкой компанией «Software AG». В свое время на крупных предприятиях для автоматизации учета персонала применялся язык Cobol. Но он отжил свой век и на смену ему пришли другие языки, в частности Natural. Он основывается на собственной системе управления базами данных Adabas. Именно с нее и началось становление компании. Хотя ничто не мешает задействовать и другие БД: DB2, Oracle, Sybase, SQL Server, DL/I, VSAM.
На предприятиях обычно строится следующая система. В качестве клиента используются компьютеры с ОС Windows. Сервером выступает мощный компьютер на базе UNIX-системы, либо, что чаще, Mainframe. «Мэйнфрейм» – это вычислительная машина со значительным объемом оперативной и внешней памяти, изначально ориентированная на бесперебойную работу при больших пиковых нагрузках. Для них разработаны специальные сверхнадежные операционные системы. Рабочая нагрузка «мэйнфреймов» может составлять 80% от их пиковой производительности, для UNIX-серверов не более 30%. Лидером по производству и качеству является компания IBM, с которой и началась их история. Они специально предназначены для автоматического решения множества бизнес задач, в том числе управление персоналом, учет рабочего времени, начисление заработной платы и т.д.
Мировым лидером, а в России это бесспорно, является система Natural. Вторым по популярности языком 4-го поколения в РФ является RPG-IV.
Мои впечатления от работы с языком таковы, со своей ролью – мощного инструмента для работы с БД, справляется на отлично, но вот гибкости языку не хватает. Это позволяет избежать многих ошибок у неопытных программистов, но со временем хочется больше свободы, творчества. Программы в большей степени получаются шаблонными. Минусом является отображение информации, графические элементы не обладают широкими возможностями настройки. Текст, в зависимости от назначения, подсвечивается разным цветом. Сравнивать скорость выборки из базы данных с другими решениями мне сложно, но на память выборка шла из полсотни тысяч записей с несколькими условиями и занимала не более 1,5-2 секунд. Особое место отводится стандарту xml и поэтому преобразовывать данные в него очень легко. Нужно всего лишь прописать несколько строчек кода и далее система сама сформирует массив xml данных.
Среди российских заказчиков, на которых функционируют продукты «Software AG», значатся: РАО «Газпром», аэропорты «Шереметьево I и II», министерство иностранных дел РФ, компания «Росвооружение», ВЦ Госкомстата РФ и др.
Язык военных
В 1977 году Министерство обороны США объявило конкурс на создание нового языка программирования. Он предназначался для автоматизированных систем управления, работавших в реальном времени. Имеются в виду бортовые системы управления танками, самолетами, ракетами. За основу нового языка был выбран Pascal. Название он получил прямо таки апокалиптическое для российского человека – «язык Ada». Из особенностей языка отметим: регистро-независимость, модульность программы и специальная конструкция для поддержки параллельного программирования.
Мы снова убеждаемся, что двигателем прогресса зачастую оказывается именно военная машина. Напомним, что сеть Интернет также вышла из под недр Пентагона.
Главным преимуществом языка Ada является строгость и четкость в синтаксисе. В нем исключена работа с объектами, а автоматическое преобразование типов сведено к минимуму. Это помогает избежать многих ошибок при программировании, что особенно опасно в военных аппаратах. Говоря про программирование военным языком – «шаг влево, шаг вправо – расстрел».
При всем вышесказанном отметим, что Министерство обороны США в своих проектах использует не только «Аду», но его доля в разработках значительно превосходит все остальные языки. Не стоит думать, что язык используется только в военных целях. Он с успехом применяется в системах управления европейскими метрополитенами, компаниях «Боинг», «Сааб», «Эрикссон».
В России язык практически не известен. Определенную роль здесь сыграл факт разработки языка по заказу недавнего врага, в лице США, для его военных нужд. В СССР была создана специальная группа, занимавшаяся изучением Ada, но с развалом союза эта деятельность прекратилась. Министерство обороны СССР успело реализовать несколько небольших проектов. Тем не менее, и по сей день в некоторых российских высших учебных заведениях изучают язык военных. В моем родном вузе языку посвящен специальный курс, так по крайней мере было когда я в нем учился.
В настоящее время активное применение «Ады» в России мне известно лишь на заводе ТАНТК им. Г.М.Бериева. В нем конструируют и производят самолеты-амфибии. Они обозначаются индексом БЕ и, кстати, пользуются большой популярностью в мире.
«Мобильные» языки
На мобильных платформах и сотовых телефонах идет ожесточенная борьба. Операционные системы Windows Mobile, Google Android, Palm OS, Symbian сменяют друг друга с невиданной быстротой. Один и тот же производитель в качестве начинки ставит на свои аппараты разные ОС. В сотовых телефонах борьбу выиграла компания «Sun Microsystems». Она разработала специальную модификацию языка Java – J2ME (Java Micro Edition). Он используется в устройствах, имеющих малую вычислительную мощность – смарт-картах, органайзерах, миникомпьютерах и стал стандартом для телефонов. J2ME мало отличается от стандартного языка Java, поэтому знающим этот язык не составит труда перейти на его мобильную конфигурацию. Для программиста это является большим плюсом. Если в вашей фирме откроется новое направление или вы смените род деятельности, вам не нужно будет изучать что-то новое. У языка отличная переносимость на телефоны разных производителей. В начале кода необходимо лишь настроить несколько параметров, главным среди которых является разрешение экрана. Производители в характеристиках обязательно указывают поддержку J2ME. На нем пишут игры и приложения. Для КПК, коммуникаторов, смартфонов может применяться любой язык программирования, но лучше выбирать его исходя из установленной платформы. Они специально заточены под определенную операционную систему и реализовать все ее возможности на них гораздо легче. Для Windows Mobile это Visual С++ и Visual Basic; на Symbian – C++, EMP и бейсик-подобный OPL . При разработке приложений часто применяют свободную мультиплатформенную среду «Eclipse». Напомним, что операционная система Android также является бесплатной.
Итог
Конечно, в статье упомянуты далеко не все языки. Их очень и очень много, но я постарался охватить наиболее востребованные на рынке труда. Какой язык изучать вам? Для того чтобы ответить на данный вопрос необходимо понять, какая область программирования вам по нраву. Если вас привлекает какое-то предприятие можно смело в него обращаться и узнавать на чем они программируют, какие предъявляют требования. Если вы сейчас не работаете, получаете образование или самостоятельно обучаетесь, самое время их узнать. Такая предусмотрительность несравненно облегчит вам жизнь в будущем.
Допустим, вам интересна микроконтроллерная техника, тогда кроме изучения самого языка будьте готовы к поверхностному освоению электроники. Но обучиться некоторым языкам самостоятельно вам вряд ли удастся. К ним относятся Natural и Ada. По ним очень сложно найти литературу даже на родном языке. Работодатель, понимая такую ситуацию, непременно пойдет вам навстречу и не будет спрашивать о знании данных языков.
Вообще, грамотный руководитель, разглядев в вас подающего надежды программиста, пусть и без опыта на данном языке или направленности, постарается взять перспективного специалиста на работу. Ценные кадры еще никому не вредили.
Программист на протяжении своей деятельности всегда должен быть готовым изучить что-то новое, впитывать все как губка. Порою бывает непросто переломить себя и начинать все с самого начала, особенно когда достигаешь определенных высот в каком-то языке. Но преодолевать себя необходимо, тогда ты начинаешь прогрессировать, дальше развиваться. Нет такого, чему бы ни смог обучиться человек. Просто кому-то это дается легко, а кому-то приходится затрачивать большие силы. Но вознаграждением вам станет чувство радости от выполненной задачи и преодоления самого себя.
(Опубликовано в газете "Мой друг компьютер", № 20 и № 21, октябрь 2009 года. Здесь дана авторская редакция.)
31284 просмотров
Ваш комментарий будет первым | | |