Содержание

ɯǝʚɯо ņıqнqvиʚɐdu) / RUVDS.com corporate blog / Habr

Многие начинают путь к изучению программирования, открыв поздним вечером Google. Обычно ищут что-то вроде «Как выучить…». Но как тот, кто ищет подобное, решает, какой именно язык программирования выбрать?

Кто-то, начитавшись сайтов и блогов крупнейших компьютерных компаний, рассуждает так: «В Кремниевой долине что ни слово –  то Java. Думаю, это – то, что мне нужно». Бывает и так: «Haskell. Он ведь на пике популярности. Страшно подумать, что будет дальше. Определённо – Haskell». И даже так: «Этот суслик на логотипе Go – такая няшка. Хочу знать Go».

Некоторые, движимые стремлением научиться программировать, ищут вот что: «Какой язык программирования выучить первым?».

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

Кликабельно:

Если рассмотреть эту схему, окажется, например, что Ruby подходит тем, кто ребёнком любил лепить из пластилина.

Выбор первого языка программирования может стать увлекательным занятием, как полусерьёзные опросники, вроде: «Кто вы из героев Квентина Тарантино?».

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

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

Выбирая первый язык стоит трезво оценить следующие факторы:

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

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

Из анализа поисковых запросов можно выяснить, что у Java были взлёты и падения. А, например, рейтинг Python постепенно рос, он стал чуть ли не самым популярным языком программирования. Есть здесь и один язык, простой, но обладающий замечательными возможностями, график интереса к которому год от года медленно растёт, хотя и находится в самом низу. Это – JavaScript.

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

  • Я не берусь спорить о том, что некий язык объективно лучше любого другого.
  • Я согласен с тем, что разработчики, в конечном счёте, изучают больше одного языка.
  • Я за то, что в самом начале пути программисту следует хорошо изучить какой-то один язык. И, как вы скорее всего догадались, прочтя хитро замаскированную подсказку в заголовке, я полагаю, что этим первым языком должен быть JavaScript.

Начнём наш разговор о первом языке с рассмотрения того, как сегодня учат программировать.

Основы информационных технологий и обучение программированию



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

Наверняка вы знакомы с этим высказыванием Эрика Рэймонда: «Образование в сфере компьютерных технологий точно так же не сделает из вас отличного программиста, как изучение кистей и красок не сделает вас прекрасным художником».

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

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

И те, кто принимают решения о том, чему учить на курсах по программированию, обычно придерживаются всяческих официальных источников, регулярно публикующих отчёты с рейтингами языков. Среди таких отчётов, например, TIOBE Index. А вот — таблица лидеров по версии IEEE.


Такие вот «таблицы лидеров» выглядят практически точно так же, как десять лет назад. Однако, всё меняется, даже в академических кругах.

Так, в 2014-м году Python обошёл Java, став самым популярным языком программирования в ведущих курсах по информационным технологиям в США.


И я уверен, что ещё одно изменение обязательно произойдёт, да что там говорить – это уже происходит.

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

Вот результат опроса, который проводился на Stack Overflow в 2016-м году. В нём участвовало 49397 разработчиков. Более половины из них используют JavaScript.

Без JavaScript невозможна разработка веб-интерфейсов, а в последнее время, благодаря Node.js, растёт актуальность JavaScript в серверном коде. Этот язык стремительно распространяется и в другие области, такие, как разработка игр и интернет вещей.

Среди программистских вакансий JavaScript упоминается чаще, чем другие языки, если не брать в расчёт Java. Вот данные с крупнейшего агрегатора вакансий Indeed.com.

Неслучайно и то, что мы, на freecodecamp.com, собрали сообщество разработчиков, занятых проектами на JavaScript с открытым исходным кодом. За прошедшие два года более 5000 человек воспользовались Free Code Camp для того, чтобы найти свою первую работу в роли программиста.

Я, кстати, не ратую за JavaScript только потому, что обучаю на нём программировать. Всё, как раз, наоборот. Я обучаю этому языку именно потому что знание JavaScript – это верная дорога к первой работе программиста.

Но подходит ли JavaScript именно вам? Стоит ли ему становиться вашим первым языком программирования? Рассмотрим подробнее те факторы выбора языка, о которых я говорил выше.

Фактор №1: рынок труда


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

Как я уже говорил, в объявлениях о вакансиях чаще всего упоминается Java. На втором же месте стоит JavaScript.

Но в случае с JavaScript надо учесть одну важную вещь. Хотя язык существует уже два десятка лет, лишь сравнительно недавно он превратился в серьёзный инструмент, с помощью которого гиганты вроде Netflix, Walmart и PayPal создают полноценные приложения.

В результате множество компаний нанимают JavaScript-разработчиков, но разработчиков этих не так уж и много.

Вот данные с Indeed.com, здесь показано соотношение вакансий и соискателей.


Итак, что мы видим. На одно место Java-разработчика приходится 2.7 программиста. В сфере вакансий, где требуется знание PHP, а также в среде iOS-разработки, складывается похожая ситуация.

Если же взглянуть на данные по JavaScript, то окажется, что на одну вакансию приходится всего 0.6 программиста. Для JavaScript-разработчиков это, определённо, рынок продавца.

Фактор №2: долгосрочные перспективы


JavaScript-проекты на GitHub получают, в среднем, в два раза больше pull-запросов, чем проекты на Java, Python или Ruby. И, кроме этого, JavaScript растёт быстрее, чем любой другой популярный язык.

Вот соответствующие данные GitHub Octoverse:

На экосистему JavaScript, кроме того, благотворно влияют серьёзные инвестиции, как финансовые, так и выражающиеся в человеческом капитале талантливых инженеров, от таких компаний, как Google, Microsoft, Facebook и Netflix.

Например, вклад в язык программирования с открытым исходным кодом TypeScript (расширенная версия JavaScript со статической типизацией) внесли более 100 разработчиков. Многие из них – сотрудники Microsoft и Google, которые получают зарплату за эту работу.

Подобную форму совместной работы компаний в среде Java найти сложнее. Например, Oracle, которая фактически владеет Java, поглотив Sun Microsystems, часто судится с компаниями, которые пытаются работать над этим языком.

Фактор №3: сложность изучения языка


Вот карикатура о сложности языков программирования от XKCD.

Большинство программистов согласится с тем, что высокоуровневые скриптовые языки сравнительно легки в изучении. JavaScript подпадает под эту категорию, вместе с Python и Ruby.

И даже, хотя в учебных заведениях языками, с которых начинают учить программировать, всё ещё являются такие, как Java и C++, разобраться в них значительно сложнее.

Фактор №4: проекты, которые можно создать, используя полученные знания


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

Повсеместное распространение JavaScript привело к такому знаменитому высказыванию Джефа Этвуда, сооснователя Stack Overflow: «Любое приложение, которое можно написать на JavaScript, будет в итоге написано на JavaScript».

С течением времени это высказывание, которое ещё называют «Законом Этвуда», не утрачивает актуальности.

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

Python страдает от похожих проблем. Вот что по этому поводу написал Джеймс Хэг в статье о том, что пришла пора отказаться от Python, как от основного языка, используемого при обучении программированию. Ученик спрашивает: «Как мне дать эту вот игру, которую я написал, друзьям? Или, это будет даже лучше, можно ли как-нибудь записать её на мой телефон, чтобы я мог показать её всем в школе, а им не пришлось бы её устанавливать?». Учителю же, если речь идёт о Python, остаётся лишь хмыкнуть. В двух словах тут и не ответишь.

Если же говорить о JavaScript, то вот живые ответы на вышеупомянутый вопрос. Это – приложения, которые написали члены сообщества Free Code Camp в CodePen, пользуясь браузером.

Вот игра «Simon», созданная в стиле 1970-х.


Вот – реализация математической игры Джона Конвея «Жизнь».

Вот – страница поиска для Wikipedia, стилизованная под «Звёздные войны».

А вот – игра-«рогалик» с традиционным подземельем.

Первый язык: пройтись по верхам, или копнуть поглубже?


Сначала как следует изучите один язык. Затем принимайтесь за следующий.

Если вы будете прыгать от одного языка к другому, нигде толком не задерживаясь, далеко вам не уйти. Для того, чтобы продвинуться заметно дальше «Hello World», нужно как следует изучить ваш первый язык. После этого со вторым и последующим языками будет разобраться гораздо проще.

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

  • Изучение C – это отличный способ разобраться с тем, как, на самом деле, работают компьютеры, в частности, в плане управления памятью. C особенно хорош в высокопроизводительных вычислениях.
  • C++ отлично подходит для разработки игр.
  • Python нет равных в научных и статистических расчётах.
  • Java пригодится тем, кто видит себя программистом в крупной компании.

Но сначала, повторюсь, стоит изучить JavaScript.

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

Возражение №1. JavaScript – язык медленный


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

JavaScript (речь идёт о Node.js) на порядки быстрее, чем Python, Ruby и PHP. Его быстродействие приближается к C++, Java и Go. Вот результаты одного весьма серьёзного теста производительности для различных языков программирования.

Возражение №2. В JavaScript нет статической типизации


Как Python и Ruby, JavaScript – это язык с динамической типизацией. И это, с одной стороны, удобно, а с другой – способно завести разработчика в лабиринт ошибок. Вот, например, здесь мне хочется, чтобы переменная exampleArray была массивом. Я записываю в массив значения, проверяю его длину, то есть – количество содержащихся в массиве элементов. Выглядит это так:
exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2

Затем я случайно записываю в переменную строку, при этом, что ещё хуже, благодаря особенностям строкового типа данных в JavaScript, я вполне могу получить длину того, что считаю массивом, обратившись к свойству length:
exampleArray = "text"
-> "text"
exampleArray.length
-> 4

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

Если же вам, в первом языке программирования, совершенно необходима статическая типизация, я всё равно рекомендую начать с JavaScript. После этого вы сможете быстро освоить TypeScript. Вот что говорит на эту тему Алекс Эверлоф: «Для того, чтобы освоить TypeScript, нужно время, но, если вы уже знаете JavaScript, всё будет гораздо быстрее и проще».

Возражение №3. Я очень хочу создавать мобильные приложения, поэтому JavaScript не для меня


Даже если так, я всё равно советую сначала изучить JavaScript. И, кстати, он вполне подходит для разработки мобильных приложений, причём, как их клиентской, так и серверной частей. А именно:
  1. В экосистеме JavaScript имеются несколько инструментов для разработки полноценных мобильных приложений. Например, это Angular Cordova и React Native.
  2. Для того, чтобы ваше мобильное приложение делало что-нибудь по-настоящему интересное, вероятно, ему понадобится серверная часть, построенная на некоей подходящей платформе, вроде Node.js + Express.js.

Кроме того, стоит отметить, что золотой век мобильных приложений уходит.

Для начала, хотя мобильными приложениями пользуются буквально все, по данным опроса Stack Overflow, в котором приняли участие 49525 программистов, практически половина из них занята в сфере веб-разработки. И лишь немногим более восьми процентов занимаются мобильными приложениями.

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

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

Сложно предвидеть перспективы развития рабочих мест для мобильных программистов. При этом многие задачи, касающиеся разработки, поддержки и распространения приложений для смартфонов и планшетов легче всего решаются с помощью JavaScript. В результате компании, вроде Facebook и Google, обеспечивают мощную поддержку лучшим JavaScript-инструментам для мобильной разработки.
По состоянию на 2016-й год, практически вся работа программистов сосредоточена на веб-проектах. Всё так или иначе связано с этой огромной платформой, со «Всемирной паутиной». И грядущее поколение бытовых приборов, с которыми можно будет разговаривать, и автомобили, которые будут сами забирать детей из школы – всё это тоже будет частью веба.

Из вышесказанного следует простой вывод: учите JavaScript.

Возражение №4: Разве JavaScript это не игрушечный язык, который был создан за десять дней?


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

Кстати, некоторым невероятно нравится критиковать C++. Но, как и JavaScript, C++ преуспел несмотря ни на что. Теперь он, точно так же, практически повсюду.

JavaScript – это ни разу не игрушка.

Удачной учёбы!


В итоге хочу сказать вот что. Если кто-нибудь станет вас доставать только потому, что вы изучаете JavaScript, а не «хит сезона», просто вспомните знаменитые слова Бьёрна Страуструпа, человека, который создал C++: «Существует лишь два вида языков программирования: те, которые постоянно ругают, и те, которыми никто не пользуется».

Удачи в изучении вашего первого языка программирования!

habr.com

Как я сам научился программировать за 8 недель / Habr

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

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

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

Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):

  • Learn Python the Hard Way. Несмотря на название, это довольно простой способ, он делает изучение основных понятий очень легким, и большинство уроков займет менее 10 минут. Тем не менее, я обнаружил, что данный способ не работает для некоторых, более сложных тем, так что я рекомендую остановиться после урока 42 и двигаться дальше.
  • Google’s python class. Читайте заметки и / или смотрите видео и делайте все упражнения, пока вы не будете выполнять их правильно — не подсматривая в ответы. Борясь с упражнениями, которые я постоянно делал неправильно было очень полезным для меня в качестве полученного опыта, и я узнал бы гораздо меньше, если бы я просто посмотрел на ответы и пытался убедить себя, что я понял упражнение.

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

Получение начального понимания веб-фреймворка Django (1 выходной):

  • Пройдите Django учебник.
  • Удалите весь код, который вы создали в процессе выполнения шагов из учебника.
  • Пройдите учебник еще раз, заново.

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

Во второй раз я не был так сосредоточен на новизне концепции и смог сосредоточиться на понимании того как все части взаимосвязаны.

Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):

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

Практика построения простых веб-приложений (2 выходных дня):

  • Выполняйте упражнения из Django в примерах. Эти упражнения не так строго ведут ученика, как учебник Django, но они предлагают хороший способ, чтобы начать разрабатывать свои собственные простые веб-приложения.
Создайте свой прототип (2 выходных дня):

Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?

Следующие шаги:

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

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

Оригинал: How I Taught Myself to Code in 8 Weeks

habr.com

как стартовать и куда двигаться? / Habr

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

Я, будучи недавно в такой же ситуации, гуглила, искала мануалов на Хабре (кое-что нашла: Десять советов начинающим программистам, Начинающему программисту про стартапы и не только…), но в итоге всё же была вынуждена обратиться за советом к одному хорошему человеку, который составил для меня вот такой план. С разрешения этого человека размещаю данный план на Хабре – вдруг он пригодится и кому-то ещё. (Тем более, что перечисленные книги относятся к «золотому фонду» литературы в данной сфере и проверены временем.)

UPD: Новичкам советую обратить внимание на комментарии — там активно и аргументированно корректируется этот план.

Этап I. Основы

Нортон «Программно-аппаратная организация IBM PC»
Эта книга, несмотря на свою давность, относятся к тем, что пока отнюдь не устарели. Как новичок подтверждаю – повествование вполне понятно и для почти полного чайника в IT.

Гук «Аппаратные средства IBM PC»
А эту книгу стоит прочитать «поверх» – она расскажет о том, как дела в данной сфере обстоят сейчас.

Этап II. Hardware

Шаг 1

Морс, Алберт «Архитектура микропроцессора 80286»
Почему тут берётся за основу именно микропроцессор 80286 – станет понятно по изучении трудов первого этапа.

Шаг 2

Гук «Аппаратные интерфейсы ПК»

Гук «Интерфейсы устройств хранения»

Этап III. Операционные системы

Шаг 1

Таненбаум «Архитектура компьютера»

Шаг 2

Колисниченко, Аллен «Linux: полное руководство»
От общей теории переходим к изучению конкретной операционной системы – на примере Linux.

Немет, Снайдер, Хейн «Руководство администратора Linux»

Этап IV. Собственно программирование

Шаг 1

Керниган, Ричи «Язык программирования С»
Почему первым для освоения выбран именно язык Си? Как мне рассказали знающие товарищи, он поможет достичь правильного «программистского мышления», чего было бы сложно достичь, начиная изучение, скажем, с Паскаля. Кроме того, язык Си по-прежнему используется в наши дни и подходит как для прикладного, так и для системного программирования.

Шаг 2

Кнут «Искусство программирования»:
Том 1. Основные алгоритмы
Том 2. Получисленные алгоритмы
Том 3. Сортировка и поиск

Бентли «Жемчужины программирования»

Зачем осваивать эти труды? Как уже отмечали на Хабре – «наверное, нигде больше, чем в айти, не изобретается такое огромное количество велосипедов». Данные книги помогут этого избежать – и попутно будут прививать умение писать не просто код, а хороший код.

Ну а для затравки можно прочесть небольшой цикл лекций «Культура программирования» (автор – А. Бабий). Он помогает начинающим программистам понять, что их деятельность не будет проходить в вакууме, а неизбежно включит взаимодействие с другими программистами, с заказчиками и пользователями (а также включит необходимость копаться потом в своих собственных или в чужих программах).

Закономерный вопрос новичка: сколько времени займёт изучение всего этого? По прогнозам моего советчика, у человека, который может тратить на изучение программирования только вечера и выходные, на прочтение и осмысление литературы первых трёх этапов уйдёт полгода-год. На четвёртый этап тоже даётся год – чтение должно сопровождаться практикой по самостоятельному составлению программ. Как получится на самом деле – время покажет.

Буду крайне благодарна за ваши советы и уточнения.

habr.com

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

Введение 

«Новичку в сфере IT стоит знать одно простое правило программирования — это написание очень тонких инструкций для глупой, но послушной машины».

Среди массы различных языков программирования новичку в IT очень сложно выбрать направления для дальнейшего развития, потому что каждый язык занимает определенную ячейку. Наиболее популярные, языки в «современном программировании», это: Java, Python, Objective-C, PHP, C, C++, C#, JavaScript и Ruby. Форумы и специализированные сайты переполнены тематикой «Что выбрать?» и «Куда развиваться?». И мы нашли оптимальную схему выбора ветки развития юным программистам.

С чего начать изучение программирования?

С чего начать изучение программирования?

Итак, с чего же стоит начать?  В первую очередь ответьте предельно честно самому себе на главный вопрос: «Почему Вы хотите начать изучать программирование?». Ответов много, а предпосылок еще больше, но если провести анализ, то мотивов стать разработчиками несколько.

  • Деньги
    Часто, наиболее распространенной причиной изучения программирования служит мнение о том, что программисты много зарабатывают. Да, это действительно так. Зарплаты хороших программистов могут заставить позавидовать даже некоторых менеджеров высшего звена. Но это достигается годами упорного труда, само мотивации и углубления в современные информационные технологии. Кроме того, дабы получать по-настоящему достойную зарплату, стоит сразу нацеливается на работу в хорошей крупной компании. Или же иметь идею на миллион и открывать свой start-up.
     
  • Перспективы
    Казалось бы, относительно недавно стоило появится первом персональному компьютеру – и нате Вам! – программисты стали одними из наиболее востребованных работниками современного рынка. Действительно, наш век – это век информационных технологий, быстроразвивающийся и динамический. Сейчас спрос на специалистов IT-сферы растет как никогда, и вряд ли стоит ждать на него спад. Все больше и больше современных компаний готовы предложить «теплое местечко». Сколько их – Google, Microsoft, EPAM прочие.
     
  • Динамичность
    Каждому человеку присуща толика любознательности. Но есть люди, у которых страсть изучать что-то новое просто в крови! Что же, в таком случае программирование – это именно то, что вам нужно. На данный момент существуют десятки различных направлений: мобильная разработка, настольные приложения, веб-программирование, игры, сколько их… А уж сколько для этих направлений было разработано технологий и программ – не счесть. Работая в сфере IT вы можете быть уверенным, что никогда не дадите себе заскучать!
    Итак, раз мы разобрались с нашими мотивами и разложили все по «полочкам», приступим же непосредственно к выбору первого языка программирования!

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

Теперь, самый важный вопрос: так какой же язык программирования стоит выбрать новичку в сфере IT? Прежде всего, все зависит от того, что именно вы желаете изучать.

Вот график наиболее востребованных направлений области информационных технологий:

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

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

  • Я бы хотел разрабатывать сайты
    С этим направлением не все так просто. Есть Front-End разработка сайтов – это все, что вы видите на экране. Создание веб-страниц, программ для них, стилей и много чего прочего. В таком случае вам стоит обратить свое внимание на JavaScript и HTML & CSS. А есть Back-End – разработка непосредственно программ для серверов – тех алгоритмов, которые, собственно говоря, и будут управлять страницами, сайтом и прочим. Здесь все несколько сложнее, так как сразу же появляется хороший выбор из Python, Java, C#, и PHP. Каждый из этих языков обладает как серией достоинств, так и набором откровенных недостатков. В качестве этакого старта советуем рассмотреть Python.
     
  • Настольные приложения для домашних ПК
    Тут бесспорными лидерами выступают такие популярные языки, как Java и C#. С одной стороны, обучение Java несколько проще и быстрее, чем C#, с другой, набор возможностей, которыми может похвалится C#, на порядок выше.
     
  • Работа с базами данных
    Ну, тут все однозначно: следует начинать с SQL! Администрирование, работа с реляционными базами данными и прочее, что так необходимо в современно IT-мире. Здесь можно рассмотреть вступление в язык запросов.
     
  • Игры-игры-игры!
    Геймерами не стают, ими рождаются. Наслаждаетесь современными продуктами игровой индустрии и сами бы хотели привнести что-то в этой увлекательный виртуальный мир? Тогда, определенно, вам стоит обратить свое внимание на С++.     

Здесь можно посмотреть статистику языков программирования по популярности:

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

Статистика поиска соискателей по языкам и платформам:

самый популярный язык программирования

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

Если начинать изучать, что начинать с простого, не так ли? Итак, вот небольшой даждест «для чайников» с чего, собственно, стоит начать обучение.

  • JavaScript
    Один из наиболее легких языков программирования для веб-разработки. Динамическое наполнение web HTML страниц, целый комплекс технологий семейства React.JS, Node.JS и прочих, обилие библиотек и обучающих материалов + плюс, огромное комьюнити. Отличный старт для новичка в области IT! Вот вступление в видео-курс по JavaScript.
     
  • Python
    Очень легкий и приятный в освоении интерпретируемый язык универсального назначения. Обширное количество довольных пользователей, огромное количество вакансий на мировом рынке, поддержка большинством сред разработки и наличие специализированных сред разработки. Ознакомится с данным языком можно здесь.
     
  • PHP
    PHP – или Hypertext Preprocessor – достаточно мощный и, в то же время, легкий в освоении язык программирования для разработки серверной части веб-сайта. Имеет богатую историю и может похвалится хорошей базой различных библиотек. Ознакомится с ним вы можете здесь.

Самый сложный язык программирования

Быть может, вы уже имели определенный опыт, связанный с IT, и желаете попробовать себя в более «продвинутой» песочнице? Или вы не из тех, кто хочет изучать что-то простое, а сразу брать «быка за рога»? Что же, на этот случай мы можем предложить следующее:

  • Java
    Отменный компилируемый язык программирования для решения целого спектра задач – от написания настольных приложений до создания серверных программ для веб-сайтов. Имеет мощную аудиторию поклонников, богатую историю, корни которой простираются в самые 90-стые и множество библиотек для практически любой задачи. Начать изучение этого языка можно здесь.

itvdn.com

10 самых влиятельных языков программирования последних 50 лет и их создатели

В IT-вселенной существует множество языков программирования. С каждым годом их становится всё больше и больше. Например, сравнительно недавно появились языки Scala, Kotlin, Go и Closure. Но история говорит нам о том, что выживут лишь немногие из них.

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

Языки — это важнейшая составляющая индустрии программирования. Их часто обсуждают, критикуют, их, с течением времени, улучшают. Они у всех на слуху, но их историю, хотя бы то, как зовут их создателей, знают далеко не все. Такое менее характерно для популярных языков. Например, все знают о том, что Джеймс Гослинг — это отец Java. Но далеко не каждый программист знает о том, кто создал Perl, Pascal, Lisp или Erlang.

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

Топ-10 языков программирования и их создатели


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

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

1. Java — Джеймс Гослинг



Джеймс Гослинг

Java — это один из самых популярных и успешных языков программирования. Java создал доктор Джеймс Артур Гослинг. Он известен как «отец Java».

Изначально разработкой и поддержкой Java занималась компания Sun Microsystems. С января 2010 года, после того, как компанию Sun купила Oracle, этим занимается Oracle.

В основу Java положен принцип WORA («Write Once Run Anywhere», «Написано один раз, работает везде»). Платформонезависимость Java стала одной из фундаментальных причин успеха этого языка в корпоративной среде.

В настоящее время Java — это один из самых популярных языков. Если вы хотите изучить Java — взгляните на этот учебный курс.

2. C — Деннис Ритчи



Деннис Ритчи

Деннис Макалистэйр Ритчи, американский компьютерный специалист, занимался созданием языка программирования C в 1967 — 1973 годах в AT&T Bell Labs.

Язык C всё ещё весьма популярен. Он широко используется в системном программировании. Он старше Java, но не сдаёт своих позиций.

Деннис Ритчи, кстати, создал ещё и всемирно известную операционную систему Unix. Сделал он это вместе со своим давним коллегой Кеном Томпсоном.

Если сравнить популярность Денниса Ритчи с популярностью Билла Гейтса или Стива Джобса, то окажется, что сравнивать тут почти нечего. Но мало кто может сравниться с ним в том, какой вклад он сделал в мир информационных технологий. Об этом стоит знать каждому программисту. Если вы хотите изучить C — взгляните на эту специализацию на Coursera.

3. С++ — Бьёрн Страуструп



Бьёрн Страуструп

Бьёрн Страуструп родился 30 Декабря 1950 года в городе Орхус, в Дании. Он известен благодаря созданию и разработке широко используемого языка программирования C++. 

C++, как можно судить по названию языка, представляет собой язык нового поколения, следующего за языком C. C++ отличается поддержкой возможностей по объектно-ориентированному программированию. Это во времена появления C++ выглядело, в сравнении с C, невероятно интересно.

C++ всё ещё остаётся одним из самых популярных языков. Он, например, широко используется при разработке систем высокочастотного трейдинга из-за того, что код, написанный на C++, довольно-таки близок к системным возможностям компьютеров, и из-за того, что этот язык поддерживает популярные в наше время объектно-ориентированные возможности.

Если вы хотите изучить С++ с нуля — рекомендую взглянуть на этот учебный курс. В нём хорошо сочетаются теория и практика.

4. Python — Гвидо ван Россум



Гвидо ван Россум

Язык Python разработал Гвидо ван Россум из Центра математики и информатики (CWI). Python — это высокоуровневый язык общего назначения. При его проектировании особое внимание уделялось хорошей читабельности кода. Его синтаксис считается чистым и выразительным.

В США Python почти заменил Java в научной среде. В частности, это выражается в том, что современные студенты начинают осваивать программирование с изучения Python, а не C или Java, как это было раньше.

Python широко используется в разных сферах, в частности, в веб-разработке и в области информационной безопасности. Этот язык применяется в таких компаниях, как Google, Yahoo и Spotify. Вот хороший учебный курс по Python.

5. JavaScript — Брендан Эйх



Брендан Эйх

Если бы вы спросили меня о том, какой язык программирования можно назвать самым популярным в последние 5-10 лет, то я сказал бы, что это JavaScript. Он, совершенно определённо, господствует в мире клиентской веб-разработки, не в последнюю очередь — за счёт существующих JavaScript-библиотек. Кроме того, он пользуется серьёзной популярностью и в серверной среде — благодаря платформе Node.js.

JavaScript — это скриптовый язык, в котором используются механизмы прототипного наследования. Это — динамический язык со слабой типизацией, который поддерживает работу с функциями высшего порядка. JavaScript создал Брендан Эйх, работавший во время разработки этого языка в Netscape Communications Corporation.

JavaScript-код может выполняться в браузерах, на JavaScript пишут всё то, что приводит в движение современные веб-интерфейсы. JavaScript используется на практически каждом серьёзном сайте.

Если вы хотите изучить JavaScript — к вашим услугам огромное количество материалов.

6. PHP — Расмус Лердорф



Расмус Лердорф

Язык PHP (изначально он назывался Personal Home Page Tools, что переводится как «Инструменты для создания персональных веб-страниц») создал в 1995 году Расмус Лердорф. Вне зависимости от того, насколько сильно вы этот язык ненавидите, вам никуда не деться от того факта, что он довольно-таки популярен при разработке серверных частей современных веб-проектов.

В настоящее время эталонная реализация PHP разрабатывается силами The PHP Group. PHP соперничал с технологиями Microsoft Active Server Pages (ASP) и Java Server Pages (JSP) и в итоге стал гораздо более востребованным, чем они. Это — опенсорсный язык, который используется такими интернет-гигантами, как Facebook, Wikipedia, WordPress и Joomla.

Если вы хотите изучить PHP — загляните сюда.

7. Perl — Ларри Уолл



Ларри Уолл

Perl — это высокоуровневый, динамический, интерпретируемый язык программирования общего назначения. Его создал Ларри Уолл в середине 1980-х. Своей популярностью Perl обязан замечательными возможностями по обработке текстов.

Perl всё ещё является основным языком, используемым для разработки скриптов в UNIX-системах. Perl используется в сфере компьютерной графики, в приложениях для работы с базами данных, в сфере сетевого программирования. Среди компаний, которые используют этот язык, можно отметить IMDB, Amazon и Priceline. Вот хороший учебный курс по Perl.

8. Ruby — Юкихиро Мацумото



Юкихиро Мацумото

Язык Ruby был создан Юкихиро Мацумото в середине 1990-х в Японии. Программирование на Ruby — занятие увлекательное. Если вы пробовали веб-фреймворк Ruby on Rails, то вы меня поймёте.

Воздействие на Ruby оказали такие языки, как Perl, Ada, Lisp, Smalltalk. Этот язык создан в расчёте на то, чтобы писать программы на нём можно было бы быстро и приятно.

Ruby, в основном, используется при разработке веб-приложений. В частности, этот язык применяется в таких компаниях, как Twitter, Hulu и Groupon.

Вот учебный курс по Ruby.

9. Lisp — Джон Маккарти



Джон Маккарти

Язык Lisp (LISt Processing language, язык обработки списков) был разработан Джоном Маккарти. Это — один из старейших высокоуровневых языков, которые используются по сей день.

Я никогда не изучал Lisp, но говорят, что этот язык является прародителем таких языков функционального программирования, как Haskell, Erlang и Scala. Этот язык используется в самых разных сферах. В частности — в военной. По Lisp существует не так уж и много учебных курсов. Вот — один из них.

10. Pascal — Никлаус Вирт



Никлаус Вирт

Pascal — это императивный процедурный язык, разработанный в конце 1960-х Никлаусом Виртом. Этот язык оказал значительное влияние на IT-индустрию. Он создавался как компактный и эффективный язык, направленный на поддержание хорошего стиля программирования за счёт использования структурного подхода к разработке. Как и в случае с Lisp, по Pascal существует не так уж и много учебных курсов. Всё же язык это довольно старый. Но если вы хотите его изучить — загляните сюда.

Итоги


Я поделился с вами моим рассказом о 10 языках программирования и об их создателях. Все, о ком я рассказал, внесли серьёзный вклад в развитие IT-индустрии. Без них современный мир был бы совсем другим.

Уважаемые читатели! Если бы вы составляли список самых влиятельных языков программирования, подобный этому, какие языки вы включили бы в него?

habr.com

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

Как некоторые разработчики осваивают новый язык программирования за одну ночь? Своими советами поделились пользователи сайта Quora. Самые интересные ответы — в нашем материале.

 

Боб Кернс, программист и разработчик языков программирования, стаж 45 лет

В общем, языки программирования не так сложны. Стоит только освоить несколько языков, понять общую идею и останется лишь запоминать ключевые слова и правила синтаксиса. Гораздо больше трудностей вызывают сложные интерфейсы программирования приложений (API).

Еще более сложными являются среды выполнения языков. Это тот набор API, который идет вместе с языком – возьмите, например, Java. Список пакетов классов занимает не одну страницу. Я работаю с Java уже около 20 лет. И все еще остаются части библиотеки рабочих программ, с которыми я не знаком. Некоторые из них новые, некоторые старые, а я их просто ни разу не использовал.

Экосистемы (доступные библиотеки) даже сложнее. Никто полностью не знает экосистемы таких устойчиво функционирующих языков, как Java или JavaScript. Они растут и развиваются быстрее, чем человек способен отследить.

Google и сарафанное радио тут как раз кстати.

 

Дэйв Бэггет, сотрудник №1 в Naughty Dog; соучредитель ITA Software

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

Однако речь тут идет не о мастерстве. Для меня «освоение языка» подразумевает некоторый уровень мастерства, а его достижение даже у лучших разработчиков занимает недели, месяцы и даже годы.

Освоение некоторых языков на высоком уровне занимает многие годы. Хотя многие считают себя экспертами в С++, я буду искренне удивлен, если доскональная проверка 10000 таких экспертов поможет нам обнаружить больше одного профессионала, который на самом деле знает язык на уровне, необходимом для написания компилятора или правильного ответа на спорный вопрос, касающийся синтаксиса или семантики. Я кодирую на С с 1979, а на С++ с 1994 и я даже близко не являюсь экспертом в С++. Хотя я никогда к этому и не стремился.

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

 

Амо Хьюигл, программист

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

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

На следующее утро я приступил к работе над проектом. И хотя поначалу я столкнулся с некоторыми проблемами, в интернете было достаточно полезной информации для исправления синтаксических ошибок. В течение следующих 2-3 дней я продолжил работу над проектом и овладел языком программирования, что позволило мне без особых трудностей справиться с проектом. Моим единственным девизом стала фраза: «К концу дня я должен знать об этом языке больше, чем я знал вчера».

Несколько важных моментов, которые помогли мне в изучении языка:

1) Проект. Поскольку существовал проект, связанный с языком, я мог постепенно осваивать язык.

2) Обширные знания в области программирования. На тот момент я уже хорошо владел другими языками программирования, что помогло мне быстро «впитать» важные принципы нового языка.

3) Последовательность. Очень важно быть последовательным в учебе. Лучше учиться по 2 часа в день в течение недели, чем 14 часов за один раз.

 

Вим тен Бринк, более 40 лет самостоятельно развиваю навыки программирования

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

Большинство языков включает в себя всего три элемента: утверждения, условия и циклы. Часто именно они группируются в методах, функциях или операциях, создающих из них «составных операторов». Принцип ориентирования на объект состоит в присоединении составных операторов к записи данных, и вы получаете общую структуру наследования. Часто интерфейсы могут применяться к классам для того, чтобы «трансформировать» различные классы в похожие. А остальное по большому счету – только разница в синтаксисе.

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

 

Ирэн Бернард, программирую с 80-х годов

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

Разница между языками программирования, как правило, также незначительна, как и отличие интерфейса Microsoft Office Word от интерфейса LibreOffice Write. Оба выполняют одни и ту же функции (форматируют текст, его стили, параграфы, заголовки, разделы, страницы и т.д., включая таблицы/списки/изображения/и т.д., добавим сюда проверку правописания, подсчет слов, автоматическую настройку полей, создание оглавления и т.д.), используя схожие методы. Пользователь просто нажимает на другие кнопки, расположенные в других местах.

Тоже самое и с языками, вещи называются по-разному, пунктуация различна, «грамматика» может различаться – но до тех пор, пока оба языка работают на основе одной парадигмы программирования, на этом различия и заканчиваются. Если они работают на разных парадигмах (напр., процедурное не объектно-ориентированное против объектно-ориентированного, или императивное против декларативного и т.д.), тогда это будет скорее походить на сравнение Word и Exel… они выполняют разные функции по-разному (даже несмотря на то, что один мог бы достичь той же цели, однако будут использованы новые пути).

Когда языки работают на основе разных парадигм, становится сложновато. Например: переход от С к С++ кажется несложным, но для того, чтобы в полной мере изучить С++, программисту необходимо понять объектное ориентирование, с которым он(а) никогда не сталкивал(а)ся в С. Именно ЭТО займет много времени, особенно потому, что в остальном С++ очень похож на С (даже пунктуация и грамматика остаются неизменными). Но допустим, кто-то переходит с Python на Ruby… Языки очень похожи, небольшая разница в грамматике, некоторые различия в пунктуации – меня тянет сказать, что программисту, «хорошо» владеющему Python, должно быть несложно выучить Ruby за 1-2 дня.

Еще одно. Что вы подразумеваете под «освоением» языка? Например: опытный программист, владеющий С++, может легко выучить Python за один день. Но насколько хорошо он/она будет знать Python? Что насчет создания списков синтаксическими методами, а не используя циклы?

Подобные вещи обычно предваряют новые модели, с которыми программист мог до этого не сталкиваться, но в то же время их вовсе не обязательно знать, чтобы использовать язык. Является ли знание таких моментов обязательным условием для того, чтобы заявить, что вы овладели Python? Обычно это называют «свободным владением» <вписать язык здесь>. Знакомство с тонкостями может занять больше одного дня, но даже в таком случае, как только вы изучите их в одном языке, вы обнаружите нечто похожее и в других.

 

Скотт Гартнер, программирую на протяжении 33 лет

Ответ крайне прост: это невозможно. Можно изучить синтаксис языка программирования, (особенно если это язык наподобие LIST, в котором минимальное количество синтаксических правил).

Однако процесс осваивания языка – это все-таки именно процесс, а не одноразовое действие. Программирую на C# уже на протяжении 12 лет и до сих пор продолжаю учить этот язык. Я работаю с PHP около 9 лет, с Java – около 8, и я могу дальше продолжить этот список. Я свободно владею всеми этими, а также многими другими языками, но суть заключается в том, что процесс изучения нового не прекращается никогда. Если бы я захотел вернуться к языку Java, мне бы пришлось потратить достаточное количество времени, чтобы освежить в памяти многие моменты.  Я больше не работаю с этим языком, но  я все равно продолжаю читать новости, касающиеся его.

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

 

Джиакомо Сорби, программист-самоучка, увлечен программированием достаточно, чтобы стать настолько хорошим программистом, насколько понадобится

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

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

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

 

Стив Кук, участвую на различных уровнях разработки программного обеспечения на протяжении 20 лет

Прежде всего стоит определить сами понятия «изучить» и «новый язык»

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

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

«Изучение языка» можно понимать по-разному. Я не могу полностью овладеть языком за один день, всегда будут оставаться неизвестные мне мелочи, но при этом по истечении этого времени я смогу начать кодировать на нем.

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

Ключевые вопросы, на которые стоит обратить внимание:

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

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

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

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

По этой причине я бы посоветовал потратить время на изучение, а может даже и на овладение Assembler, С, С++, а также на Java и C#. Это даст вам четкие теоретические знания, а также понимание базового уровня. Как только вы освоите их, стоит переходить к изучению языков, основанных не на языке С. Это будет наверняка непростой задачей, так как придется в некоторой степени изменить ход мышления, но такими языками, как python или lisp, действительно стоит овладеть. 

 

Марк Бадиола, INFJ, программист, блогер, иллюстратор

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

Я работаю в компании, в которой программисты не идентифицируют себя как Java-разработчик, С или C#-разработчик и т.д. Конечно, у нас есть любимые языки программирования, но при этом мы получаем удовольствие, работая с другими языками, в том случае, если эти языки лучше удовлетворят нужды клиентов. Поэтому нам действительно свойственно пытаться за одну ночь выучить новый язык/оболочку, чтобы разработать действенную стратегию, каким образом интегрировать нашу работу с уже существующей системой, или же иметь прочное обоснование, предлагая цену за проект.

Я предпочитаю следовать трем простым рекомендациям:

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

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

3. Используйте интернет. Пункт номер 2 подскажет вам направление. С его помощью вы узнаете, что вам необходимо искать. Вместо запроса «обучающая программа для языка Х», поиск можно начать с чего-то более конкретного, например «определение классов в языке Х». Лично я не могу воспринимать и запоминать информацию, которая не нужна мне прямо сейчас. К примеру, зачем изучать все типы циклов, если в данном приложении все они мне не понадобятся? Я буду искать информацию о них только тогда, когда они мне будут нужны.

Само собой разумеется, что я веду речь о моем стиле обучения. Другие люди учатся совершено по-другому.

www.kv.by

как выучить любой язык без слез и ругательств / Онлайн школа EnglishDom corporate blog / Habr

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

Этих людей можно понять. Достаточно вспомнить, как мы сами учили английский в школе. За 6-8 лет обучения большинство учеников могли воспроизвести только фразы «My name is…» и «London is the capital of Great Britain». Свободное владение? Не, не слышал.

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

В команде EnglishDom есть полиглот, который знает 7 языков. Марина свободно говорит на украинском, русском, английском, французском, польском, немецком и шведском.

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

Совет 1. Сделайте язык, который вы изучаете, родным


Вы можете спросить: «Что за муть? У меня ведь есть родной язык. Их не может быть два!». Но для начала стоит понять одну важную вещь. У человека нет врожденного понимания языка.

Мозг одинаково хорошо воспринимает языковые конструкции, вне зависимости от характера языка. Это доказывает один-единственный факт.

Маленькие дети в любой стране учатся говорить примерно в одном и том же возрасте — 1-2 года. Уже в 4 года дети в полном объеме могут свободно оперировать комплексными понятиями и фразеологизмами.

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


Главная сложность изучения второго языка — его отличия от первого. Объясним. Мозг воспринимает родной язык как константу. И когда человек начинает учить еще один — он конфликтует с первым.
Если объяснить на пальцах:
В русском языке вы знаете, что А+В=3
А в английском оказывается, что А+В=8, а С еще и в уме нужно держать.

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

При желании можно написать еще. При этом все эти фразы абсолютно равнозначны. Отличаются разве что тонкими нюансами. А вот на немецком есть только два возможных варианта.
Ich liebe dich
Dich liebe ich.

Они тоже отличаются по нюансам, но в немецком вы не можете сказать «Liebe ich dich». Это будет неправильно грамматически.

В английском все еще «интереснее».

I love you.

И в принципе все. Фишка, которая прошла с немецким, здесь уже не работает. «You love I» — это неправильно. О других вариантах и вспоминать нечего. Но можно поиграться и перестроить предложение. К примеру, фразу «It’s you I love» использовать можно, но у нее будет другой смысл.

К чему мы ведем. Изучая иностранный язык, нельзя мыслить категориями родного. Зачастую они только мешают.

Что с этим делать? Как мы уже написали, нужно сделать иностранный язык родным. Используйте его в быту.

И нет, это не означает говорить с родными только на нем. Хотя если они знают тот язык, которые вы учите, — это было бы идеально.

Чтобы облегчить процесс, даем вам 2 эффективных хитрости.

Хитрость 1.


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

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

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

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

Сериалы и фильмы — ну вы поняли.

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

Марина, полиглот EnglishDom.


Хитрость 2.


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

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


Здесь мы просто не могли не вставить этот отрывок из сериала «Клиника». Кто в очередь, чтобы научиться говорить, как милая молочница?

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

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

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

Совет 2. Поддерживайте актуальность языка


Актуальность языка — это комплексное понятие. Начнем с актуальности мотивационной.

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

Мотивация подбирается строго индивидуально. Одни предприниматели учат язык, чтобы общаться с заграничными деловыми партнерами и заключать с ними выгодные контракты. А другие бизнесмены учат язык, чтобы обучаться у лучших профессионалов мира.

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

Один из самых интересных примеров мотивации в изучении языка — это Джузеппе Меццофанти, итальянский кардинал XVIII-XIX века.

По документированным данным, кардинал свободно владел 38 языками. И еще 30 языков и диалектов мог понимать и объясняться на них.

С личностью Меццофанти есть интересная история.

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

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

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


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

Есть один интересный способ, который способен увеличить результативность обучения в разы.

Устройте соревнование со своими друзьями.

Человеческий мозг устроен таким образом, что конкуренция и соперничество подстегивает его работать эффективнее.

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

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

То есть, им понадобилось всего лишь 7 дней, чтобы выучить язык с нуля до уровня бытового общения. Если смогли они, то что мешает остальным?


С мотивацией вроде разобрались. Теперь немного об актуальности временной.

Одно из основных правил в изучении языков звучит: лучше заниматься каждый день по 30 минут, чем раз в неделю по 5 часов.

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


Кривую забывания построил немецкий психолог Герман Эббингауз. Она показывает, как в памяти удерживаются знания.

Уже на следующий день человек забывает до 50% всей изученной информации. И чем больше промежутки между повторениями, тем сильнее забывание. Через неделю человек забудет до 90% полученных знаний — и на их повторение нужно будет потратить почти столько же усилий и времени, сколько на изучение.

Но если повторять информацию каждый день, кривая забывания выравнивается. Если 3 дня подряд вы будете повторять, к примеру, новые слова, то через неделю в памяти останется 80-90% от изученного. При этом суммарное время занятий и в первом (раз в неделю) и во втором (каждый день) случаях абсолютно одинаковы.

Именно поэтому в большинстве программ изучения иностранных языков занятия ведутся через день — как наиболее оптимальная тактика с точки зрения затрат времени и полученных результатов.

Совет 3. Сделайте процесс изучения языка интересным и веселым


Если занятия проходят весело, это стимулирует мозг для создания ассоциативных связей с информацией, которая в него поступает. А это значит, что знания будут усваиваться проще и крепче.

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

  • Любите комиксы? Читайте Marvel и DC, если учите английский. Или мангу — если японский.
  • Любите хороший юмор? Смотрите стендапы на языке, который учите! В каждой стране есть отличные комики.
  • Любите поэзию? Читайте классиков и сами пробуйте писать стихи.

Главное — получать удовольствие от процесса. Ограничений здесь практически не существует.

Мы в EnglishDom часто рекомендуем молодым людям играть в компьютерные игры на английском. Реакция почти всегда одинаковая:

Зато потом просто море энтузиазма, когда эти ученики разбирают и пересказывают диалоги из Far Cry или Witcher 3. На стандартных упражнениях обучение идет раза в 4 медленнее.

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

«Как-то с учеником вместе переводили русские матерные песни и частушки на английский.

Занятие сложное, ведь нужно не только перевести по смыслу, но еще и ритмику и рифмы сохранить, чтобы петь удобно было.

Была куча шедевров вроде:

Down the river drifts an axe
From the town of Byron.
Let it float by itself —
Fucking piece of iron!

Потом эти частушки пели чуть ли не каждое занятие. Настроение отличное — и учеба шла как по маслу каждый раз.

И если кто мне скажет, что это сомнительный способ учить английский, так я отвечу, что ученика своего за 5 месяцев подтянула, и он без проблем сдал TOEFL».

Марина, полиглот EnglishDom.


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

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

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

EnglishDom.com — онлайн-платформа по изучению английского

Прокачай разговорный английский на онлайн-курсах от EnglishDom.com. По ссылке — 2 месяца подписки на все курсы в подарок.

А для живого общения выбирай обучение по Skype с преподавателем. Первый пробный урок — бесплатно, регистрируйся тут. По промокоду goodhabr2 — 2 урока в подарок при покупке от 10 занятий. Бонус действует до 31.05.19.

habr.com