Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Часть I. Работа с негативными материалами.

Читайте также:
  1. D триггеры, работающие по фронту.
  2. I ВВОДНАЯ ЧАСТЬ
  3. I часть «Механика».
  4. I часть. РОССИЯ
  5. I. Вводная часть
  6. I. ВВОДНАЯ ЧАСТЬ
  7. I. ПАСПОРТНАЯ ЧАСТЬ
  8. I. Паспортная часть.
  9. I. Паспортная часть.
  10. I. Паспортная часть.

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

Во-вторых, следует отличать язык программирования (Basic, Pascal) от его реализации, которая обычно представлена в составе среды программирования (Quick Basic, Virtual Pascal) - набора средств для редактирования исходных текстов, генерации исполняемого кода, отладки, управления проектами и т.д. Синтаксис и семантика языка программирования фиксируется в стандарте языка. Каждая среда программирования предоставляет свой интерпретатор или компилятор с этого языка, который зачастую допускает использование конструкций, не фиксированных в стандарте.

Далее, очень существенно, для какой цели выбирается язык - для обучения программированию либо для решения конкретной прикладной задачи. В первом случае язык должен быть простым для понимания, строгим и по возможности лишенным "подводных камней". Во втором - пусть сложным, но эффективным и выразительным инструментом для профессионала, знающего чего он хочет.

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

При решении конкретной прикладной задачи в большинстве случаев язык и среда программирования не выбираются, а задаются извне - заказчиком, начальником и т.п. В том же редком случае, когда возможен выбор, исходить, на мой взгляд, следует из следующих условий (в порядке приоритета): а) характера самой задачи и технических требований; б) наработанного инструментария и имеющихся для данной среды библиотек; в) имеющихся в языке и среде программирования инструментальных средств. Зачастую при подобном выборе поступают строго наоборот: сначала решают, что программировать будут на объектах, затем - что использоваться будет такая-то библиотека, а потом подгоняют под это технические требования, объясняя все это тем что заказчик не знает чего хочет...

Применимость языка для той или иной задачи зависит от того, каким набором понятий он оперирует, в рамках каких концепций (парадигм) он позволяет работать, какие имеются стандартные и распространенные пользовательские библиотеки и т.д.

По набору понятий языки прежде всего подразделяются на высоко- и низкоуровневые. Первые предоставляют высокий уровень абстракции от оборудования, вторые - низкий, приближенный к машинному.

С точки зрения того, внесены ли в набор понятий особые, специфичные для предметной области объекты, языки делятся на универсальные (процедурные) и специализированные. К последним можно отнести Prolog, Lisp. Универсальные языки позволяют реализовать любой алгоритм, пользуясь стандартным набором конструкций. Благодаря этому, код на таком языке может быть достаточно легко перенесен из одного процедурного языка в другой при помощи консервативных изменений.

Приведем основные концепции, внесенные в те или иные общеупотребительные языки и связанные с ними понятия: - Типизация/структуры данных Любой язык характеризуется набором _базовых типов_, возможностями по пополнению этого набора при помощи ряда _конструкторов_: массив, запись (структура), объединение. В некоторых языках имеется универсальный тип (Variant в Delphi и Visual Basic), свободно используемый как любой из базовых типов. Степень контроля типов может быть очень разной - от полного отсутствия до крайне жесткого. Важно наличие (возможно, в виде библиотеки) структур данных переменной длины, например, динамических массивов. - Подпрограммы и вызовы Различия в языках сводятся к способам определения процедур и функций, вариантам передачи параметров, возможностям определения рекурсивных процедур и наличию процедурного типа данных. - Типы памяти Наличие и широкая классификация типов памяти дает возможность эффективно управлять ее распределением, но и вносит сложность, требующую от программиста более внимательного отношения. Обычно выделяют (максимальный спектр): регистры, глобальные, локальные и динамические переменные. - Модули Наличие средств логического объединения группы процедур/функций/переменных позволяет работать с большими проектами, упрощая их структуру. Важное свойство - возможность описания процедур инициации и завершения модуля. - Объектный подход Объединение структур и методов их обработки (_инкапсуляция_) создает значительные удобства при программировании. Возможность _наследования_ позволяет привести в систему набор структур. Автоматически вызываемые конструкторы и деструкторы упрощают отслеживание взаимосвязей. Все это составляет удобный инструмент для описания понятий и действий прикладной программы. - Переносимость - независимость от аппаратуры, реализуемая при помощи семантики, не зависящей от конкретной машины и внесением в язык ряда специфичных понятий - таких как базовый тип с нефиксированным размером (int в C).

С точки зрения эффективности, важно как исполняется программа - последовательной интерпретацией исходного текста (интерпретатор) либо непосредственным исполнением готового кода (компилятор). Интерпретатор целесообразно использовать лишь в случае когда скорость интерпретации не сильно сказывается на эффективности программы. Кроме интерпретации и компиляции возможны промежуточные варианты с генерацией псевдокода, который отличается от от исходного текста высокой скоростью интерпретации либо другими полезными свойствами (например, возможностью исполнения на машинах различной архитектуры - как Java).

 

Выбор языка программирования

Автор: Igor Kirsanov

Под программированием обычно понимают создание компьютерных программ, хотя на самом деле это и создание драйверов, прошивок и даже простое нарезание дырок в перфокарте для станка.

На сайте "Программисту.РФ" будет рассматриваться программирование для компьютеров и мобильных устройств. Узкоспециализированные отрасли, например, робототехника временно останутся в стороне.

Чтобы выбрать язык программирования для себя, нужно знать ответ на некоторые вопросы, чаще всего возникающие в голове новичка.

Вопрос 1: Какой язык самый лучший

Нет хороших и плохих языков программирования. Задача у всех одна - объяснить машине, что от неё хотят получить в итоге. Как ей объяснять, на каком языке - дело вкуса, а о вкусах не спорят

Вопрос 2: Какой язык программирования самый быстрый

Не существует медленных языков, существует только не правильный подбор инструментов для решения поставленной задачи.

Можно месяц делать программу на сверхбыстром assembler, при этом не получить нужный результат и за пять минут сделать тоже самое на медленном и "ленивом" haskell и решить задачу, хотя по производительности ассеблер в сотни, если не в тысячи раз быстрее хаскелла на определённых операциях.

Под медлительностью иногда подразумевают производительность языка программирования. Эти данные важны при выборе языка для программы или ускорения медленных участков. Но это не значит, что если у одного языка условная производительность равна 1000 единиц, а у второго 5000, то первый медленный и плохой. Это значит что они оба пригодны для проекта требования к которому 500 единиц.

Вопрос 3: Типичные ошибки и как их избежать

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

А нужно было сделать так, чтобы просто работало, в 70% случаев производительности уже будет хватать. В оставшихся 30% достаточно ускорить только критические участки. Сразу появится куча свободного времени для более интересных вещей.

Вопрос 4: Как работать с исходниками

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

Работа с исходным кодом будет состоять из:

· Обязательного комментирования и документирования исходников

· Сбора из исходников готового решения

· Устранения "узких" мест в программе

Вопрос 5: Как программу сделать быстрой

Решение обычно заключается в ускорении с помощью других программ, увеличения мощности техники или перевод определённых участков программы на язык программирования "ниже" уровнем и при этом ближе к машинному языку для ускорения программы.

Например, для сайтов на PHP таким решением будет кеширование. Если кеширование не помогает, то некоторые модули сайта могут быть переписаны на более производительном языке таком как Java или C++

Вопрос 6: Что почитать и с чего начать изучение

Для начала не плохо бы просто без теории и особых знаний скачать пошаговый самоучитель с подробным описанием куда нажать и что получиться в итоге. После того, как будет сделано 2-7 программ по данной инструкции будет видно нравится ли этот язык и\или программирование в целом или лучше заняться более чем-то более понятным и интересным. Если все устраивает, то нужны обязательные теоретические знания, иначе трудно понять, почему это цифру нельзя просто так дописать к слову, на бумаге проблем не возникает. После желательно взять сразу две книги, одна из которых руководство по языку, а вторая - любая книга с уроками в виде примеров.

Вопрос 7: Работа для программиста

Заработная плата программиста чаще всего зависит от следующих факторов:

· Востребованность данной специализации на рынке

· Места проживания или работы программиста

· Репутации как человека, так и организации предлагающей работу

· Редкости языка программирования

· Квалификации и уровня знания языка

По данным на начало 2012 года стабильная заплата PHP программиста в Москве 30-50 тыс. руб., в то время как программист 1С или Java - 80-110 тыс. руб.

Вроде бы не мало, но тут вступает в действие другой закон

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

Поэтому возникает выбор - работать на менее оплачиваемой работе и заниматься поддержкой или получать сотни тысяч, но работать быстро и постоянно находится в поиске работы


 

 

Навеяно жизненным опытом…

Вообще, выбор языка программирования — это техническая, инженерная задача, подлежащая анализу и обоснованию. Удивительно. Правда?

Ведь, язык программирования в 8 случаев из 10 (речь о русскоговорящих странах) выбирает руководитель проекта или руководитель компании. Скорее всего, у него ни опыта ни образования нет в сфере IT. Но всё равно, он умнее и опытнее всей команды, вместе взятой…

Просто, сейчас он занят другими вопросами и поэтому не может сам сесть и написать программу. А так бы, запросто. И нечего с ним спорить. Выбор языка программирования — его прерогатива. Недавно мне один из моих заказчиков выдал: «дык, что там писать сервер, подконнектился и всё, сервер готов, чего я должен деньги платить за это».

Знакомая ситуация?

Это реальность. Это мы — пещерные люди. А фраза «человек — существо разумное» вряд ли имеет к нам отношение.

Разработчики тоже часто отжигают. Классика примерно такая:
а) напишу на том языке, который знаю (сам писал сайты на C++, когда не знал PHP); б) напишу на том, что легче. Последним грехом и американцы здорово страдают. В итоге, куча шарпеев и одинэсников, а программистов нет.

Народ тупо жжет. И разработчики и их руководители. Вроде, взрослые дядьки, многие с высшим образованием… Некоторые с двумя. Но это не мешает им писать обработчики файлов на PHP, сервера реального времени на C#, GUI на C++, а драйверы устройств на JAVA.

Может, кто-то не понял: цемент месим кухонным миксером, сваи забиваем детским пластиковым молотком, на работу ездим на бульдозере, а для доставки пиццы в пределах города заключаем договор с курьерской службой из другой страны. Грубо, но где-то так.

Вывод русской практики: выбор языка программирования неважен. Пофиг что писать, пофиг на чем писать, пофиг кто будет писать. Более того, русской практикой доказано, пофиг для какой архитектуры компилировать и вообще не важно как оно будет работать. Всё равно, программа будет работать (даже если это переносной кардиограф, банкомат или командо-аппарат ядерного реактора) только на IBM-PC и только под управлением Windows и обязательно с установленной средой разработки, т.к. в исполнимый файл забыли включить нужные библиотеки. Важны только две вещи: кто получит деньги за программу и как послать разработчика на [половой_орган] после того как программа будет готова. Всё остальное значения не имеет.

Как на одном демотиваторе в русскоязычном интернете: «Звук выхлопа очень зависит от формы выхлопной трубы — доказано инженерами из завода AUDI. Звук выхлопа вообще не зависит от выхлопной трубы, т.к. весь выхлоп стравливается из под хомута под салоном — доказано пьяным Иваном из АвтоВАЗа».

А вот что говорит теория и реалии европейских коллег.

Каждый инструмент должен использоваться строго по назначению. Выбор инструмента всегда должен осуществляться на основании анализа технических особенностей, удобства использования и экономической целесообразности. И выбор языка программирования для решения той или иной задачи, не является исключением.

Вряд ли ПО скоростемера для поезда TGV написано на C#. Вряд ли энергосистема Токийского метро управляется IBM-PC совместимой машиной под управлением ОС производства Microsoft. Очень сомневаюсь, что для разработки ПО системы голосования для Бундестага был выбран язык, который знает заказчик системы. Ну и уж точно не поверю, если кто-то скажет, что ПО для АТС Siemens EWSD написано на JAVA.

Теперь мои советы.

Совет 1.

Забудьте про такой язык, как C#. Никогда и ни при каких обстоятельствах не используйте его. Даже если за это платят деньги. Это искусственная аномалия на мировой карте языков программирования. Его использование гарантированно заведет вас в тупик. Спустя некоторое время Вы неизбежно будете вынуждены осваивать новую профессию. Скорее всего, не связанную с программированием. Всё дело в том, что если Вы станете профессиональным шарпеем, программистом Вы уже не станете никогда. Этот язык специально разработан таким образом, чтобы ломать психику тех кто его использует. Это, я бы сказал, психологическое оружие компании Microsoft. Главная его задача — сломать мышление программиста и навязать вымышленные стереотипы, вызвать сильное привыкание. Стоит признать, что с этими задачами C# справляется более чем на отлично.

Совет 2.

1С. Туда же, куда и C#. Смешно слушать, когда настраиватели 1С называют себя программистами. Я же не называю себя кондитером, от того, что я люблю есть тортики и пирожные. Каким образом одинэсники стали программистами и где они там увидели программирование — мне не известно (мой опыт работы с 1С чуть больше 4 лет). Может быть, с точки зрения предметной области (бухгалтерия, учет) одинэс у кого-то и хорошо работает, хотя мне такие случаи не известны, но с точки зрения программирования там делать нечего. Программирование — это написать платформу, похожую на одинэс. Программирование — это написать платформу, похожую на точканэт. А использовать их — это не программирование. Это как цеплять прицеп к машине и собирать машины. И там и там соединяешь металлические детали, но общего ничего нет между тем и другим.

Совет 3.

В большинстве случаев учите и используйте три языка программирования:
PHP — для относительно простых по архитектуре (по масштабам нет ограничений) WEB-приложений;
JAVA — для нетребовательных к надежности и быстродействию приложений любого типа.
C++ —для всех остальных случаев. Это самый мощный, самый надежный и самый совершенный язык программирования из когда либо созданных человечеством. Правда, он самый сложный. Или один из сложнейших.

Не зависимо от других языков, программист должен хорошо знать концепцию реляционных баз данных, их нормальные формы и язык SQL. Так же, почти обязательными для программиста являются знания XML и HTML.

Ну и совсем в идеале — хотя бы азы Ассемблера. Иногда встречаются такие ситуации, когда задачу можно решить только на Ассемблере. Например, написать программу, которая управляет двенадцати канальной елочной гирляндой и проигрывает мелодию при этом, и запустить эту программу (вместе с данными) на микросхеме с четырьмя килобайтами памяти, под силу только на Ассемблере.

Вообще, языков программирования существует несколько сотен штук. Некоторые из них знает лишь десяток людей (когда-то и у меня был собственный язык программирования для систем с числовым программным управлением). Несколько десятков языков хорошо распространены. И лишь три из них считаются классикой.

В самом обобщенном случае, подумайте, стоит ли учить какой-то конкретный язык для какой-то узкой задачи. Например, если кто-то просит Вас написать макрос на Visual Basic для Microsoft Office, есть сомнения, что Вы сможете применить свои знания хотя-бы еще один раз в жизни. Или если сейчас много открытых вакансий по языку C#, его освоение всё равно никогда не сделает из Вас программиста и не позволит Вам расти финансово. Финансовый потолок на C# Вы «берете» в первые пару лет своей работы. В русскоговорящих странах он равен примерно 2500$/месяц (в среднем). В то же время, JAVA или C++ — это программирование. Здесь все ограничено лишь вашей фантазией. Здесь к вашему распоряжению все аппаратные платформы и все сферы деятельности человечества (от ПО для учета товара у продавца, пофиг на каком оборудовании, до ПО для управления двигателем ракеты или марсоходом, если речь о C/C++). Единственное исключение, это младшие линейки процессоров. Например, на процессорах ATMega 128 или PIC 16F84, JAVA в полном смысле этого слова не поддерживается. Но для таких процессоров лучше писать на Ассемблере.

Примечание для малолеток, которые будут спорить со мной по поводу C#: сколько успешных промышленных проектов, работающих с быстродействующим оборудованием (станки с ЧПУ, роботы, автопилоты, телефонные станции и прочее), лично Вы реализовали в своей жизни? Уверен, что ровно ноль. Посему, втихушечку анонируем на свой C# и не спамим здесь в комментариях. Ладно, демагогию в сторону.

Сейчас я покажу свойства основных языков программирования. Это из моей почти 15-летней практики (на момент написания этой статьи). Эту информацию Вы найдете только здесь, на моем блоге USLUGIPROG.COM.

JAVA

Язык на все случаи жизни. Не самый надежный. Не самый быстрый. Работает на всех более или менее мощных платформах. Средний порог вхождения. Особенность языка: для запуска приложения на разных платформах одного класса не требуется сборка программы под каждую платформу. Конечно, для разных классов платформ это правило не работает. То есть, Вы не запустите (без специальных знаний) на обычном компьютере программу для телефона. И наоборот. Точно так же, не запустите на основном процессоре телефона то, что написано для выполнения на сим-карте. Но то что написано для UNIX-подобной операционной системы, Вы почти без проблем запустите на компьютере под управлением операционной системы производства Microsoft. Совсем без приключений не получится. Вам понадобится установить окружение JAVA. Оно то и собирается и пишется под каждую платформу и под каждую операционную систему. При чем, пишется на С++. Но это уже сделали за Вас. Вам только скачать правильное окружение и установить. После чего JAVA программы запускаются как и полноценные программы (по меньшей мере, так это выглядит для пользователя).

Как ни странно, но на сегодняшний день нет технологий, которые позволяют писать действительно кроссплатформенные программы. В любом случае, Вы должны либо отдельно собрать свою программу под несколько видов платформ (переносимость на уровне исходных кодов) — это C++, Pascal и другие языки программирования. Либо собрать свою программу в некий условный пакет, а на каждой машине для запуска программы должны установить какую-то дополнительную лабуду (например, JAVA окружение). Так чтобы написал программу, собрал ее в исполняемый файл, скопировал и запустил ее на любом процессоре и под управлением любой операционной системы — сегодня это остается фантастикой.

Не ждите от JAVA высокой производительности и надежности программ. Сама идея JAVA делает это самым узким местом всей технологии.

Так же на JAVA можно построить WEB-сервис или WEB-приложение. И даже обычный сервер можно написать на JAVA. То есть, можно писать программы под любой процессор, для которого существует JAVA-окружение.

Плюсы: очень удобно, не слишком сложно, относительно безопасно, относительно быстрая разработка.
Минусы: не самая высокая надежность, не самое высокое быстродействие, не эффективное использование ресурсов, невозможность работать в масштабе реального времени и обращаться непосредственно к оборудованию.

C++

На сегодняшний день (и так уже больше 30 лет и изменений не предвидится) это Царь и Бог системного программирования. На этом языке можно можно написать любое программное обеспечения для большинства процессоров (за исключением совсем маленьких микросхем). Здесь Вам не нужно устанавливать на процессор никакого окружения, программа на C++ является полноценным и законченным исполняемым файлом, который выполняется непосредственно на конвеере команд микропроцессора. Но за это приходится дорого платить: для каждого типа процессоров нужно собирать отдельный файл программы. А при наличии операционной системы (как на персональных компьютерах, например) даже для одного типа процессоров приходится собирать версии программ для каждой операционной системы. Чтобы запустить одну и ту же программу на пяти персональных компьютерах, работающих под управлением разных операционных систем (например, QNX, Solaris, Apple, Windows, Linux), Вы вынуждены из одного и того же исходного кода собрать версию программы для каждой операционной системы (и то, это если код написан грамотно). Кроме того, здесь очень высокий порог вхождения. Можно 10 лет писать на C++ и освоить лишь 20% от всех его возможностей. На этом языке написаны почти все операционные системы, почти все сервера (особенно, учитывая то что окружение JAVA почти полностью написано на С++).

Однако, сайты писать на С++ не удобно (сайт на С++ — это собственный WEB-сервер, а не сайт как такой).

Графические интерфейсы тоже не всегда удобно писать на С++.

В последнее время наметилась интересная тенденция. Основные крупные игроки рынка (Microsoft, Google, Apple) агрессивно сопротивляются против разработки на С++. Очевидно, это вызвано тем что они боятся настоящих программистов. Ведь таких программистов невозможно жестко привязать к продуктам этих компаний. Еще больше эти компании боятся того, что программисты С++ могут без проблем писать свои операционные системы и скрывать от них (корпораций) данные пользователя. Таким образом, в будущем, могут появлятся всё новые и новые корпорации со своими операционными системами. Ведь они то сами все свои операционки, джавы, точкинэты и прочуюю хрень пишут на С++. Т.е. крупные корпорации хотят оставить С++ своей прерогативой. Благо, это касается только рынка готовых компьютеров. Производители микросхем (Atmel, Intel, AMD, Microchip) не поддерживают такое стремление производителей операционных систем.

Плюсы: практически безграничные возможности, отсутствие промежуточных звеньев в работе программы, высочайшее быстродействие (уступает только чистому Си и Ассемблеру), прямой доступ к памяти и оборудованию.
Минусы: очень сложный, нет возможности напрямую строить сайты, трудоемкий процесс разработки.

PHP

Это язык для WEB-технологий. На нем есть смысл писать сайты и WEB-сервисы. Есть и другие хорошо распространенные языки для работы в Интернете (JAVA, Perl). Но PHP — это классика.

У PHP низкий порог вхождения, быстрый процесс разработки (при грамотном проектировании). Можно построить сайт или WEB-сервис практически любого уровня сложности.

Это, по сути, скриптовый язык. Он не компилируется в программу. И даже не транслируется в промежуточный пакет. Код программы (непосредственно текст, который написал программист) читается и тут же выполняется PHP-окружением. С одной стороны, это здоровенная дырища в безопасности, а с другой — возможность исправления ошибок в работающей системе «на лету».

Плюсы: простой язык, очень гибкий.
Минусы: в основном, предназначен только для работы в Интернете, другие его применения мало распространены.

SQL

Это язык для работы с базами данных. Он позволяет добавлять, получать, удалять и изменять данные в базе данных (вообще, не только данные, а и саму базу данных).

У SQL нет ни плюсов ни минусов. Он не является языком программирования. Это язык запросов для работы с базами данных. Его нужно знать всем программистам и точка.

HTML

Это тоже не язык программирования. Это язык разметки гипертекста. На нем делаются сайты. Это то, на чем делаются страницы сайтов в Интернете. Сайт можно написать непосредственно на HTML. Такой сайт будет очень быстрым, надежным и безопасным. Но сложный сайт сделать на чистом HTML ужасно сложно и неудобно.

Когда Вы пишите сайт на PHP или JAVA — все равно WEB-сервер отдает конечному пользователю HTML.

Здесь тоже нет смысла говорить о плюсах и минусах.

ASSEMBLER

На языке Ассемблера пишут программы для конкретного процессора. Это самый быстрый язык программирования. Быстрее не существует. На ассемблере пишут программы, которые очень критичны к размеру, ресурсам и времени выполнения. В основном, это программы, которые работают непосредственно с оборудованием. На Ассемблере пишут части операционных систем, которые работают непосредственно с оборудованием, компиляторы других языков, а так же программы, работающие на машинах без операционных систем.

Другие применения Ассемблера не оправданы.

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

Итоги. Этот перечень не является исчерпывающим. Всё, что я здесь описал — это не передирание текстов из институтских книг, а мои личные выводы, сделанные на основе 15-летней практики программирования и 10-летней практики разработки электронной техники.

Думайте. Дерзайте. И никогда (запомните, НИКОГДА!) не слушайте тех людей, которые защищают свои незнания. То есть, когда человек чего-то не знает, не понимает, при этом всегда находит много оправданий, почему ему не надо это учить, вместо того, чтобы признаться, прежде всего себе, что он не разбирается в чем-то.


 

У меня за плечами 5 лет опыта работы разработчиком и самый частый вопрос, который я слышу:

 

Какой язык программирования стоит учить?

 

Этот вопрос задают новички и эксперты. Как и другие аналогичные вопросы, ответ не так прост. Существует много факторов, которые следует учитывать при выборе языка программирования.

 

Технологии развиваются быстрыми темпами и со временем ваши знания могут просто устареть. Еще стоит учитывать то, что языки программирования различаются в плане функциональности и сложности. Поэтому ответ будет зависеть от того какую задачу вы хотите решить. Например, если вы разрабатываете статическое веб-приложение, вы должны знать обычный HTML. И, наоборот, если вы хотите создать динамичное приложение с расширяемыми возможностями, вы должны выучить ASP.NET, PHP, Ruby on Rails или JavaScript и освоить соответствующий фреймворк. Настольные и мобильные приложения имеют различные требования.

 

Кроме того, я заметил, что не только программисты изучают языки программирования, но и люди из других сфер деятельности. Недавно я наткнулся на одного ученого в области психологии, который поручил своему сотруднику выучить язык программирования для обработки результатов его исследований. Это еще раз показывает, что любой может программировать.

 

Теперь вернемся к нашей десятке. Я решил составить список языков программирования, которые могут быть полезны в решении ряда задач, а также добавил ряд типичных направлений разработки. Вы должны взглянуть на эти языки и выбрать тот, который наиболее подходит вашим требованиям. Итак, приступим к делу.

 

1. Язык С

 

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

 

Немного истории: Язык Си был разработан Деннисом Ритчи в 1972 году в Bell Labs. Прелесть языка Си в том, что он является предшественником таких языков программирования как С++, Java, C#, JavaScript и Perl. По этой причине изучение этого языка ведет к понимаю и других языков. Язык С используется для разработки низкоуровневых приложений, так как считается ближе всего к аппаратному, уступая только ассемблеру. Если вы новичок, лучше всего начать с Си.

 

2. Язык С++

 

Хотя язык Си был неплохим, в нем не хватало работы с объектами. Чтобы решить проблему, в 1986 году был разработан С++, который является одним из самых распространенных языков в мире. Google Chrome, Mozilla Firefox, Winamp и линейка продуктов Adobe были разработаны с помощью С++. Кроме того, некоторые современные игры и операционные системы были разработаны на С++ из-за быстрого процессинга и компиляции. Кроме того, разработчики С++ имеют огромный спрос на рынке труда и количество вакансий постоянно растет.

 

3. Java

 

Java был разработан Джеймсом Гослингом в 1990 году в компании Sun Microsystems. Java дополнительно увеличивает возможности языка С++. Особенность Java заключается в том, что это первый чисто объектно-ориентированный язык программирования. Java был разработан по принципу WORA (Write Once Run Anywhere или "написав код однажды, вы запустите его везде"). Речь идет про переносимость Java. Необходимо скомпилировать исходный код на Java всего лишь раз, а затем запустить на любой машине с установленным JVM (Java Virtual Machine) и затем использовать.

 

Язык Java использует для разработки корпоративных приложений и видео игр, он может быть использован для разработки веб-приложений с использованием JSP (Java Server Pages). Java имеет огромный рынок вакансий. Этот язык необходимо выучить любому программисту.

 

4. Язык С#

 

С# принадлежит семье языков программирования Microsoft и был разработан в 2000 году и стал частью первого релиза.NET framework. Язык С# сочетает в себе надежность С++ с дополнительными возможностями Java. Поэтому если вы хорошо знаете Java, можно легко переключиться на С# и наоборот.

 

Язык С# позволяет разрабатывать практически любые приложения, которые связаны с Visual Studio IDE. При разработке динамических веб-приложений в ASP.NET вам потребуется код на С# или VB для написания механизма обработки бэкенда. Если вы разрабатываете приложение Windows или Windows Presentation Foundation (WPF), вам потребуется код на С#. Аналогично если вы разрабатываете приложение для телефона на windows, снова потребуется С#.

 

Учитывая сказанное, язык C# стоит учить, если вы планируете разрабатывать приложения для Windows платформ. Рынок труда для программистов C# довольно хорош, поэтому вы сможете найти для себя прибыльное место.

 

 

5. Objective C

 

Objective C был первоначально разработан в Apple Брэдом Коксом и Том Лавом в 1983 году. Целью создания языка Objective C было устранение недостатков в языке Си, в первую очередь связанных с поддержкой объектов. Objective C приобрел огромную популярность из-за разработки приложений для iPhone и iPad.

 

Знание Objective C пригодится вам в тех компаниях, которые разрабатывают приложения для Apple. В дополнение к этому индустрия фриланса имеет огромный спрос на программистов Objective C по всему миру.

 

6. PHP

 

PHP - это один из наиболее широко используемых языков для разработки динамических веб сайтов. PHP был разработан в 1995 году и является языком сценариев на стороне сервера, что означает, что PHP код обрабатывается на сервера, а конечный результат пользователь получает в виде обычного HTML.

 

PHP открытый язык разработки, поэтому написаны уже тысячи модулей, которые можно модифицировать до требуемой функциональности. Кроме того, PHP легко выучить; вы просто должны вставлять код в HTML. Существуют сотни PHP платформ, таких как Joomla, WordPress и Drupal, которые позволяют разрабатывать веб сайты даже более удобно. PHP стоит учить, если вы планируете карьеру веб разработчика. PHP это неотъемлемая часть знаменитого LAMP (Linux, Apache, MySQL и PHP), на которой основаны Facebook, Yahoo и др. PHP имеет огромный рынок труда, хотя не так высокооплачиваем как ASP.NET.

 

7. JavaScript

 

Серверные языки сценариев идеально подходят для разработки сложных веб приложений, но каждая такая задача сильно нагружает сервер. Поэтому разработчики делегировали часть функций на сторону клиента и использовали JavaScript. JavaScript - это язык программирования, выполняемый в клиентском браузере и обрабатывает команды на компьютере конечного пользователя, а не сервера, что приводит к снижению нагрузки на сервер и увеличению скорости работы приложения. JavaScript был разработан компанией Netscape и вряд ли есть сайты, которые не используют его. JavaScript сам по себе не поможет вам устроиться на работу, но этот язык стоит выучить с некоторыми дополнительными языками сценариев на стороне сервера.

 

8. Python

 

Python - это другой высокоуровневый язык программирования и часто считается самым легким языком, благодаря своей простоте, читаемости и синтаксису. Python был разработан Гвидо Ван Россумом в 1991 году. Python не использовался так широко в прошлом, однако стал особенно популярным за последние годы благодаря инвестициям Google. В настоящее время некоторые весьма известные и надежные сайты работают на python, особенно pinterest.com, instagram.com и rdio.com. Как и PHP, Python можно использовать для разработки веб приложений.

 

9. SQL

 

SQL - это не язык программирования, а язык структурированных запросов к базе данных. SQL является простым для изучения и ближе к английскому языку с точки зрения синтаксиса. Практически каждое приложение имеет базу данных и для взаимодействия с ней необходимо глубокое знание SQL. Как JavaScritp, один лишь SQL не будет полезным в плане трудоустройства, но станет хорошим бонусом.

 

10. Ruby

 

Похожий на Python, Ruby - простой и читаемый язык программирования, ориентированный на разработку веб приложений. Разработанный Юкихиро Мацумто в 1995 году, фреймворк Ruby использовался для разработки Github, Scribd, Yammer, Shopify и Groupon. Ruby сочетает в себе некоторые возможности Lisp, Pearl и Eiffel. Ruby имеет хороший рынок труда и разработчики получают достойно.

 

Какой язык выбрать?

 

Существуют определенные факторы, которые следует учитывать при выборе языка программирования.

 

Что вы хотите разрабатывать: приложения для веба, настольные или мобильные?

 

Какие ваши личные интересы: коммерческое ПО или ПО с открытым исходным кодом.

 

Какой рынок труда существует для выбранного языка?

 

Кривая обучения для данного языка.

 

Учитывая последние тенденции, вы должны владеть хотя бы одним веб ориентированным языком, одним для настольных приложений и один для мобильных платформ, чтобы выделяться на фоне остальных программистов. https://www.udemy.com/blog/best-programming-language/

 

Часть I. Работа с негативными материалами.

 

Лекция 1. Типы негативных фотоматериалов. История. Современный рынок предложений.

 

Лекция 2. Физико-химические основы проявления, химическое и физическое проявление. Компоненты проявителей, типы проявителей, основные рецепты.

 

Лекция 3. Методы проявки, контроль контраста, правильная агитация.

 

Лекция 4. Ослабление и усиление проявленного материала, управление зерном, промывка, правила фиксирования, стабилизация, сушка, push и pull процессы.

 

Преподавательский практикум. Разбор лабораторного оборудования6 правила обращения и техника безопасности.

Демонстрация проявки разными методами, управление контрастом, зернистостью, резкостью, исправление ошибок проявки и промывки.

Домашнее задание – съемка на заданную тему на узкоформатный пленочный материал.

 

Самостоятельный практикум. Работа по проявке отснятого материала.

 

Лекция 5. Оценка негатива, проявленного в первый день. Методики оценки негатива.

 

Лекция 6. Правильный замер экспозиции, обращение негативной пленки, ЧБ слайд.

 

Лекция 7. Разбор проделанной работы: разбор ошибок и варианты их исправлений Ответы на вопросы. Выдача сертификатов.

 

Стоимость:

 

 




Дата добавления: 2014-12-19; просмотров: 56 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Выбор языка и среды программирования| Сущность и виды управления

lektsii.net - Лекции.Нет - 2014-2024 год. (0.039 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав