Какой язык программирования изучать – Какой язык программирования начать изучать филологу в 30 лет, если в школе у него было 3 по алгебре, 4 по геометрии, а по остальным предметам 5?

Содержание

«Какой язык программирования выбрать новичку?» – Яндекс.Кью

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

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

Языки для разработки сайтов

Если у вас нет опыта разработки, начните с азов. HTML — язык разметки, основа для дальнейшего продвижения в веб-разработке. Знание гипертекстовой разметки поможет создавать статичные страницы. Следующий этап — JavaScript. С его помощью можно добавить сайту интерактивности. Во front-end разработке это необходимый минимум.

Back-end или серверную часть сайта можно писать на PHP, Python, Ruby, Java, C#. У каждого языка своя экосистема, большая инфраструктура. Чтобы выбрать фаворита, подумайте в какой сфере вы бы хотели работать, и проанализируйте, какие языки в ней чаще используют разработчики.

Языки для разработки игр

Об универсальности Python уже говорилось, и в геймдеве он тоже пригодится. 2D и 3D-игры, простые квесты и RPG — это далеко не все, что можно написать на «змеином языке». Скрипты Python хорошо взаимодействуют со многими движками, что позволяет использовать их для более эффективного и простого кода, даже если игра написана на другом языке.

Не теряет популярности Java, и достижения технического прогресса играют ему на руку. Кроссплатформенность этого языка позволяет легко адаптировать игры под любую операционную систему. Java пригодится не только в игрострое. С его помощью создают Android и веб-приложения, серверные проекты в сфере финансовых услуг, встраиваемые системы и инструменты для обработки Big Data.

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

Языки для разработки приложений

Если речь идёт о мобильных приложения, важно определиться, для какой ОС они создаются. Нативные разработки под Android пишутся на Java, под iOS — на Objective C и Swift, под Windows — на C#. Однако многие популярные приложения являются гибридными: интерфейс делается на нативном языке, внутренности дорабатываются на других: HTML5, JavaScript и тому подобных.

Для десктопных приложений пригодятся C++, Python, Java, C#. Каждый язык имеет свои нюансы. Код на Python легко собирается в один exe-файл, который не требует от пользователя установки дополнительных компонентов. Java и C# вынуждают владельца ПК установить фреймворки, что может повлиять на популярность приложения у потребителя. При этом разработки на этих языках легко дорабатываются под нужную платформу и отличаются быстрой производительностью. C++ —  надёжный выбор с минусом в виде низкой скорости разработки. Зато программы на этом языке экономно расходуют системные ресурсы и имеют высокую производительность.

Программировать с нуля. «Сейчас» — самое подходящее время, чтобы начать


(Иллюстрации к статье А.П. Ершова «Программирование — вторая грамотность»)

Стив Джобс не написал ни строчки кода, Билл Гейтс — написал. Пол Грэм — первоклассный программист, Питер Тиль — юрист по образованию, сооснователь PayPal и владелец Palantir (написал ли он что-нибудь?), а Илон Маск в детстве написал свою игру и успешно её продал.

Никита truesnow из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?

На ум сразу пришел бомж-программист, но после успеха с его приложением он предпочёл остаться «дзен-монахом». Есть ли еще примеры? Вдохновляющий пример, что научиться кодить может каждый — слепой программист. Когда я прочитал статью на Хабре «Смотря на код с закрытыми глазами», то понял, что нет преград, кроме собственных отмазок.

А у меня для вас есть три истории из моей жизни. Просто три истории.

История первая — ламер

Слово «ламер» я прочитал в «Компьютерре». Там давалось такое определение:
«Ламер — отнюдь не безграмотный человек, не умеющий (как бы это помягче выразиться?) программировать».
Окрылённый истиной я побежал и рассказал об этом друзьям-одноклассникам, но они предпочли поиграть в футбол, вместо того чтобы освоить суперспособности. Забавно, что потом все они зарабатывали программированием деньги, а я нет. Через неделю я записался в краевую станцию юных техников (КСЮТ), где был кружок по программированию. Там для новичков давали qbasic. А боги прогали на C.

Так вот как-то один из «богов» подозвал меня к монитору и спросил: «Так сможешь?». И показал прогу, которая ждала, когда пользователь введёт в командной строке любой символ, а потом поворачивала его на 90 градусов. Я был ошеломлен.

Наверное, меня это так зацепило, что я решил — во что бы то не стало, выучить все что можно, и стать самым крутым программистом. Заряда хватило на годы. Этот случай я позабыл, прошло несколько лет, и, вспомнив о нем, я написал не больше десятка строк на basic`e минут за 20. Программа работала идеально.

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

История вторая — первый шифр

Идея пришла внезапно. Пришла так, что не смог заснуть и сел кодить. Из шифров тогда я знал только про пляшущих человечков из Шерлока Холмса (а это класс 8 или 9, занимался программированием полгода-год). Мне захотелось написать шифр, чтобы нельзя было так просто его вскрыть простым анализом.

Задумка была следующая: каждой букве русского алфавита мы приписываем массив из 5 символов в виде букв русского и английского языка, спецсимволы. При шифровании мы рандомно выбираем один из них. Получалась «расширенная» простая замена. Это сейчас мне понятно как его ломать, но тогда для меня была запредельная высота. Через 3-4 года я поступлю на компьютерную безопасность.

Вывод. Решать интересные задачи — это круто. Но гораздо круче придумывать и находить задачи самому.

История третья — триумф BASIC`а

Я уже 2 года «занимался» программированием. И тут в школе появилась… информатика. Меня почему-то отправили в слабую группу. Как узнал позже, моё лицо не понравилось преподавательнице и она посчитала, что я тупой. Мои друзья ворвались в кабинет к директору и сказали, что я занял призовое место на краевой олимпиаде по программированию. Начались, разборки, но мне было так пофиг, что я остался в слабой группе, где учили вводить цифры в Exсel. За первую неделю я сдал всю программу и спокойно ходил играть в Diablo 2 в компьютерный клуб.

А на олимпиаде был забавный случай. Разрешённые языки — C, Pascal, а я то был прожжённым бейсичником. Выкрутился. Задачу принимали в виде exe’шника, а я подсуетился и нашёл бейсик, который кует exe’шники. Программы проходили тесты, а сами тесты принимались на серваке. Одна задача была сугубо вычислительная. Давались координаты центров и радиусы двух окружностей. Требовалось выдать взаимное расположение окружностей в текстовом виде: пересекаются, касаются, одна в другой, совпадают, и прочие.

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

Вывод. Школа — зло. Результат — круто. Нестандартное мышление — прикольно. Обходной путь есть всегда.

Зачем взрослым учиться программировать

У меня есть три ответа на этот вопрос. Они зависят от горизонта планирования:

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

— Цель на год-два — это бабло. За это время можно научиться создавать ценность и работать удаленно. Или учить других. Очень многие хотят научиться программировать.

пруф

сам поискал 8 сентября:

на русском в 1000 раз меньше:


— Цель на 5-10 лет — развитие в целом. Во-первых, вы улучшите своё мышление. Во-вторых, вы сделаете неоценимый подарок детям. Они получат несколько лет форы в изучении программирования и у вас появится много чудных моментов совместного написания программ. Для полного счастья останется научиться играть в компьютерные игры, но это вы скорее всего уже умеете.
Как научиться программировать

Есть заезженная картинка на этот счёт:

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

Если готовы приступить по-взрослому, то есть множество ресурсов для самообучения. От Coursera (раз, два) до всяких %имя%academy (codeacademy, htmlacademy и пр)

Если намерения совсем серьёзные, могу посоветовать курс «Врубиться в Ruby».

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

— Никита, почему именно Ruby?
— Все просто, мы нашли очень хорошего преподавателя.

Про Ruby
Попробовать сделать первые шаги можно прямо сейчас, займет всего 5-10 минут.


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


А зомбяк не хотите ли? railsforZOMBIES.org

Про Lisp

«Однако я не думаю, что смогу убедить кого-нибудь (старше 25) выучить Lisp.» Пол Грэм, «Побеждая посредственность»

Начитавшись Грэма, осваиваю Lisp.
;; Welcome to L(λ)THW!
(let ((llthw '(learn lisp the hard way)))
  (format t "~{[email protected](~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw)))

;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.


Нашёл для себя удобную браузерную обучалку Learn Lisp The Hard Way

«За те годы, что я проработал в Viaweb, я прочитал множество объявлений о найме на работу. Примерно каждый месяц появлялся новый конкурент. Первое, что я делал после того, как проверял, доступна ли онлайновая демонстрация работы их программы, — смотрел список их вакансий. Через пару лет я научился отличать опасных конкурентов от неопасных. Чем больше отдавало IT-мэйнстримом от описания требуемых кандидатур, тем менее опасна была компания. Самыми безопасными были те, кому требовались специалисты по Oracle. О таких не стоило беспокоиться. Также мы были спокойны, если требовались разработчики на C++ или Java.

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

Ещё пара советов

  • Читайте Хабр. Например, вот это статья может очень помочь тем кто уже начал свой путь — «Почему научиться программировать так чертовски тяжело?» Или история успеха — «Как я сам научился программировать за 8 недель»
  • Читайте Пола Грэма. Он вдохновит заняться программированием кого угодно. Даже меня. Даже на Lisp.
  • Найдите единомышленников
  • Найдите вдохновляющую задачу
    напримерОбщие упражнения:
    Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование на любом языке.
    Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
    Rosalind — это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
    Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
    codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
    Ruby Quiz — серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.

    Задачи из олимпиад по программированию:
    UVa Online Judge — коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
    TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
    CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
    Timus — то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
    SPOJ — похож на UVA, с огромным числом языков программирования на выбор.
    USACO содержит несколько задач на алгоритмы с руководством по их решению.

    Под определённые языки:
    Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.
    Python Challenge — объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.
    4Clojure — набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык.

  • Соревнуйтесь
  • Играйте в Игры для программистов
  • Пишите код каждый день
  • Пишите о своих успехах и находках на Хабр

P.S.
Ещё интересные статьи с Хабра на тему быть/не быть программистом и как делать шаги на пути мастерства

P.P.S.
Алан Кэй делится яркой идеей об идеях. Архитектура, математика, обучение, программирование и много ещё интересного.

Какой язык программирования выбрать для работы с данными? / Habr

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

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

Специфичность

Будьте готовы к тому, что по мере углубления в область науки о данных, вам раз за разом прийдется заново «изобретать велосипед». Кроме того, вам необходимо будет в совершенстве овладеть различными пакетами программ и модулями для выбранного вами языка программирования. Насколько хорошо вы сможете все это усвоить, зависит, в первую очередь, от наличия предметно-ориентированных пакетов программ для выбранного ЯП.
Универсальность

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

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

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

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

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

R, который является прямым потомком старшего языка программирования S, был выпущен в далеком 1995 году и с тех пор становится все совершеннее. Написанный на таких языках как C и Fortran данный проект сегодня поддерживается Фондом языка R для статистических вычислений (R Foundation for Statistical Computing).

Лицензия:

Бесплатная

Преимущества:

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

Недостатки:
  • Низкая производительность. Здесь нечего сказать: R не является быстрым ЯП.
  • Специфичность. R прекрасно подходит для статистических исследований и науки о данных, но он не так хорош, когда дело доходит до программирования для общих целей.
  • Другие особенности. R имеет несколько необычных особенностей, которые могут сбить с толку программистов, привыкших работать с другими ЯП: индексирование начинается с 1, использование нескольких операторов присваивания, нетрадиционные структуры данных.

Наш вердикт – идеальный вариант для первоначальных целей

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

Python

В 1991 году Гвидо ван Россум представил язык программирования Python. С тех пор этот язык стал чрезвычайно популярным ЯП общего назначения и широко используется в сообществе специалистов по данным. В настоящее время основными версиями являются Python 3,6 и Python 2,7.

Лицензия:

Бесплатная

Преимущества:

  • Python – это очень популярный, широко используемый язык программирования общего назначения. Он имеет обширный набор специально разработанных модулей и широко используется разработчиками. Многие онлайн-сервисы предоставляют API для Python.
  • Python очень прост в изучении. Низкий порог вхождения делает его идеальным первым языком для тех, кто занимается программированием.
  • Такие программные пакеты как pandas, scikit-learn и Tensorflow, делают Python надежным вариантом для современных приложений в области машинного обучения.

Недостатки:
  • Типобезопасность. Python – это динамически типизированный язык, а это значит, что вы должны быть осторожными при работе с ним. Ошибки несоответствия типов (например, передача строки (string) в качестве аргумента методу, который ожидает целое число (integer)) могут время от времени случаться.
  • Например, в случае если имеются конкретные цели статистического анализа и анализа данных, то обширный набор пакетов языка R дает ему преимущество перед Python. Кроме того, существуют более быстрые и безопасные альтернативы Python среди языков программирования.

Наш вердикт – удобен во всех отношениях

Python является хорошим вариантом для целей науки о данных (data science), и это утверждение справедливо как для начального, так и для продвинутого уровней работы в данной области. Большая часть науки о данных сосредоточена вокруг процесса ETL (извлечение-преобразование-загрузка). Эта особенность делает Python идеально подходящим для таких целей языком программирования. Библиотеки, такие как Tensorflow от Google, делают Python очень интересным языком для работы в области машинного обучения.

SQL

img align=«center» src=«habrastorage.org/web/f7e/2cf/42d/f7e2cf42d60b4b8fa6f442504828fe57.png»/>

SQL («язык структурированных запросов») определяет, управляет и запрашивает реляционные базы данных. Язык появился в 1974 году и с тех пор претерпел множество видоизменений, но основные его принципы остаются неизменными.

Лицензия:

Есть бесплатные и платные варианты.

Преимущества

  • Очень эффективен при работе с запросами, обновлениями, а также при обработке реляционных баз данных.
  • Декларативный синтаксис делает SQL очень читаемым языком. Нет никакой неопределенности в том, что SELECT name FROM users WHERE age > 18 должен делать!
  • SQL очень часто используется в различных приложениях, так что знакомство с ним может очень пригодиться. Модули, такие как SQLAlchemy, упрощают интеграцию SQL с другими языками.

Недостатки:
  • Синтаксис SQL может показаться достаточно сложной задачей для тех, кто привык к императивному программированию.
  • Существует множество различных вариаций SQL, таких как PostgreSQL, SQLite, MariaDB. Все они достаточно разные, поэтому ни о какой совместимости не может быть и речи.

Наш вердикт – эффективный, несмотря на время

SQL более полезен в качестве языка для обработки данных, чем в качестве передового аналитического инструмента. Тем не менее, так много процессов в области науки о данных зависит от ETL, а долговечность и эффективность SQL лишний раз свидетельствуют о том, что такой ЯП должен знать каждый специалист по данным (data scientist).

Java


Java – это чрезвычайно популярный язык общего назначения, который работает на виртуальной машине Java Virtual Machine (JVM). Это абстрактная вычислительная система, которая обеспечивает плавную переносимость между платформами. В настоящее время поддерживается корпорацией Oracle.

Лицензия:

8-я версия – бесплатная

Преимущества:

  • Универсальность. Многие современные системы и приложения разработаны с помощью языка Java. Огромным преимуществом такого ЯП является способность интегрировать методы науки о данных непосредственно в существующую кодовую базу.
  • Строгая типизация. Обеспечение типобезопасности не пустой звук для Java, и в случае разработки критически важных приложений для работы с большими данными эта особенность как никогда важна.
  • Java – это высокопроизводительный, скомпилированный язык общего назначения. Это делает его пригодным для написания эффективного производственного кода ETL, а также алгоритмов машинного обучения с использованием вычислительных средств.

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

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

Много чего можно сказать в пользу изучения Java как языка для работы в области науки о данных. Многие компании оценят возможность беспрепятственной интеграции готового кода программного продукта в собственную кодовую базу, а производительность и типобезопасность Java являются его неоспоримыми преимуществами. Тем не менее, к недостаткам такого языка можно отнести тот факт, что у него отсутствуют наборы специфических пакетов, которые доступны для других языков. Несмотря на такой недостаток, Java является языком программирования, которому обязательно стоит уделить внимание, особенно если вы уже знаете R или Python.

Scala



Функционирующий на JVM язык программирования Scala был разработан Мартином Одерски в 2004 году. Это язык с несколькими парадигмами, позволяющий использовать как объектно-ориентированные, так и функциональные подходы. Кроме того, структура кластерных вычислений Apache Spark написана на Scala.

Лицензия:

Бесплатная

Преимущества:

  • Используя Scala и Spark, у вас появляется возможность работать с высокопроизводительными кластерными вычислениями. Scala – это идеальный выбор для тех, кто работает с большими объемами данных.
  • Мультипарадигматический. Для программистов, работающих со Scala, доступны как объектно-ориентированные, так и функциональные парадигмы программирования.
  • Scala компилируется в байт-код Java и работает на JVM. Это позволяет ему взаимодействовать с языком Java, делая Scala очень мощным языком общего назначения. Кроме того, он также хорошо подходит для работы в области науки о данных.

Недостатки:
  • Если вы только-только собрались работать со Scala, то будьте готовы изрядно «поломать» голову. Лучше всего загрузить sbt и настроить IDE, например Eclipse или IntelliJ, с помощью специального плагина Scala.
  • Есть мнение, что синтаксис и система типов Scala являются достаточно сложными. Таким образом, программистам, привыкшим работать с динамическими языками, например Python, придется несладко.

Наш вердикт – идеальный вариант для работы с большими данными

Если вы решили использовать кластерные вычисления для работы с большими данными, то пара Scala + Spark – это идеальное решение. Более того, если у вас уже есть опыт работы с Java и другими статически типизированными языками программирования, то вы непременно оцените эти возможности Scala. Однако, если ваше приложение не имеет ничего общего с большими объемами данных, работа с которыми может оправдать добавление всех составляющих Scala, вы, скорее всего, добьетесь большей производительности, используя другие языки, такие как R или Python.

Julia

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

Лицензия:

Бесплатная

Преимущества:

  • Julia – это скомпилированный язык JIT («точно в срок»), благодаря которому удается достичь хорошей производительности. Этот язык является достаточно простым, он предусматривает возможности динамической типизации и сценариев интерпретируемого языка, такого как Python.
  • Julia был предназначен для проведения численного анализа, он также может рассматриваться в качестве языка программирования общего назначения.
  • Читаемость. Многие программисты, работающие с данным языком, считают, что такая особенность является его наибольшим преимуществом.

Недостатки:
  • Незрелость. Поскольку Julia является достаточно новым языком, некоторые разработчики сталкиваются с нестабильностью во время работы с его пакетами. Тем не менее, базовые средства языка считаются стабильными.
  • Еще одним признаком незрелости языка является ограниченное количество пакетов программ, а также небольшое число поклонников среди разработчиков. В отличие от устоявшихся R и Python язык программирования Julia не располагает большим количеством пакетов программ (пока что).

Наш вердикт – язык, который себя еще проявит

Да, главная проблема языка Julia – это его молодость, однако его нельзя за это винить. Поскольку Julia был создан лишь недавно, он пока что не может конкурировать со своими основными конкурентами, Python и R. Будьте терпеливыми и вы поймете, что существует множество причин обратить пристальное внимание на этот язык, который, непременно, сделает выдающиеся шаги в ближайшем будущем.

MATLAB



MATLAB – это признанный язык для численных расчетов, используемый как в научных целях, так и в индустрии. Он был разработан и лицензирован MathWorks, компанией, созданной в 1984 году, основной целью которой являлось коммерциализация программного обеспечения.

Лицензия:

Цены варьируются в зависимости от выбранного вами варианта языка

Преимущества:

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

Недостатки:
  • Платная лицензия. Вне зависимости от выбранного вами варианта (для научных, личных целей или целей компании) вам придется раскошелиться на дорогостоящую лицензию. Наш совет: обратите внимание на бесплатную альтернативу – Octave.
  • MATLAB – это не лучший язык программирования для общего назначения.

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

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

Другие языки


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

C++


Зачастую, C++ не используется в области науки о данных. Тем не менее, он имеет молниеносную производительность и широкую популярность. Главной причиной, по которой C++ не обрел популярности в области науки о данных, является его неэффективность для такой цели.

Как написал один из участников форума:
«Предположим, что вы пишете код для проведения какого-либо специального анализа, который, вероятно, будет запускаться только один раз. Так вот, вы предпочли бы потратить 30 минут на создание программы, которая будет работать в течение 10 секунд или потратить 10 минут на программу, которая будет работать в течение 1 минуты?»

И этот парень прав! Тем не менее, C++ станет отличным выбором для реализации алгоритмов машинного обучения, оптимизированных на низком уровне.

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

JavaScript


Ввиду того, что за последние несколько лет платформа Node.js активно развивалась, язык программирования JavaScript все больше и больше обретал черты серверного языка. Однако его возможности в области науки о данных и машинного обучения на сегодняшний день достаточно скромны (тем не менее, не стоит забывать про brain.js и synaptic.js!). К недостаткам JavaScript можно отнести:
  • Слишком рано для него, чтобы вступить в игру (Node.js всего 8 лет!)…
  • Платформа Node.js и вправду быстрая, но всегда найдутся те, кто будет активно критиковать JavaScript.

К неоспоримым преимуществам Node.js можно отнести его асинхронный ввод-вывод, его растущую популярность, а также тот факт, что существует множество языков, которые компилируются с JavaScript. Так что вполне возможно, что в недалеком будущем мы увидим полезный фрейморк для работы в области науки о данных с возможностью обработки с помощью ETL в режиме реального времени. Другой вопрос: будет ли это актуально на то время…

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

Perl


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

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

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

Ruby


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

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

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

Заключение


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

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

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

А может вы зубрили MATLAB на парах в институте или не прочь дать SciRuby шанс показать себя? Да у вас могут быть сотни разных причин! Если так, то оставьте свой комментарий внизу – ведь для нас действительно важно знать мнение каждого из вас!

Спасибо за внимание!

Маркетинг для вашего проекта на Reddit, Medium и Bitcointalk.

Какой язык программирования выучить полному нулю? — Хабр Q&A

1 — надо начать.. (тут пролетал клиент, который уже скоро как пару лет просит советов, но судя по вопросам — ни строчки не написал)

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

3 — C++ это не для слабонервных — несколько лет на обучение?.. можете себе позволить?… (и ни кто не гарантирует, что за это время король не будет свержен ;))

4 — середнячки, но типизированные — C#, java — оба и в топах востребованности, и порог вхождения не убийственный.. проблема выбора в том, что это жутко конкурирующие ЯП )).. ориентируетесь на МС? — C# без вариантов!.. опенсорц?/линукс?/андроид? что то из этих слов перевешивает винду? — тогда java, так же без вариантов.. (точнее вариантов до дури.. тот же Kotlin ))

5 — js …. см п2… js тянет на 2.5… и не просто так.. (см п3) .. вынос мозга в js тоже будет ))… низкий порог вхождения .. тут скорее иллюзия.. востребованность? вспомните лет через 5?.. все так же может сильно изменится… и главное — привычки полезные в js вас снова отдалят от универсальности.. так что лучше п4.. ;))

ps питон идет в п2.. ((.. я сам поклонник функционального стиля.. и питон… ну его полезно хорошо знать… но не делайте на него ставку ни как язык для познания программирования.. ни как на язык для карьеры

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

допустим веб — примитивный бэк на пхп и фронт на js? ну и хорошо… но базу вы поставите на п4 )) … скриптование в линуксе на питоне? — супер!.. но только в копилку, а не как единственное достижение

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

.. как то так

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

Здравствуйте, уважаемые читатели блога KakiGdeUchitsya.ru. Поскольку блог ориентирован на школьников и студентов, я немного начну с воспоминаний, уж извините старика. И начать нужно со школы, в которой уроков информатики в 10 -11 классах у меня было 6 часов в неделю, в общем мне хватало. И хватило настолько, что я даже пошёл в университет изучать программирование дальше, в университете у меня любовь к программированию немного отбили изучением дурацких языков программирования вроде русского Assembler’a. Но зато теперь я точно могу ответить на вопрос какой язык программирования изучать, всё же за спиной много лет теории и практики в этом деле. И я искренне надеюсь, что вопрос этот весьма волнует школьников, а потому перехожу к делу.

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

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

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

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

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

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

Дальше у нас были Pascal и Delphi, языки, не страдающие новизной, скорее безнадежно устаревшие. Но мы писали какие-то программки, мне это нравилось и было интересно. Но серьезно углубляться в эти языки я бы не советовал, куда углубляться будет в следующем пункте статьи, который уже начинается. Да, чтобы Вы не думали, что я такой древний, я тут поинтересовался у знакомого школьника из 11 класса какие языки программирования они учат. Оказалось, что всё тот же Pascal. 10 лет прошло зря.

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

Какой первый язык программирования изучатьРазбегаются не только глаза, но и руки, ибо хочется попробовать всё

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

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

А теперь обещанный список:

1. C#. Причем именно C#, а не «плоский» С или С++. C# является развитием С и С++, ничем им не уступает в плане функциональных возможностей, но на нем, как не странно, программировать легче. После C# программирование на С++ кажется натуральным издевательством. Но это всё общие слова, сейчас немного о том, почему я поместил именно этот язык программирования на первое место.

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

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

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

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

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

4. Java. Это будет последний язык, который я опишу в данной статье. Страшно сказать сколько лет Java считается самым востребованным языком программирования, я приблизительно скажу, что 20 лет, но вполне вероятно, что больше. В большинстве случаев Java используется для разработки мобильных приложений, но не всё так просто. Данный язык программирования можно использовать и в разработке графических виджетов для web, и для разработки приложений для ПК. Язык Java вообще практически никак не «привязан» к той или иной платформе, или устройству.

Рассказывая про Java нельзя упустить тот момент, что именно этот язык может помочь разобраться с программированием, как областью работы. Узнать все принципы ООП, можно разобраться с функциональным программированием и много чем ещё.

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

Если Вы выберете программирование в качестве своей работы, то не забывайте о том, что хороший программист должен постоянно развиваться и изучать что-то новое. Поэтому постарайтесь посмотреть на свои силы трезво. Но лучше уж быть программистом, чем каким-то маркетологом или ещё каким ненужным человеком. До встречи на страницах блога KakiGdeUchitsya.ru

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

Если у Вас остались вопросы, пишите в комментариях, постараюсь ответить максимально подробно и ясно или просто пообщаемся.

Возможно Вас заинтересует:

(Всего просмотров 861, просмотров сегодня 19)

Какой путь изучения программирования выбрать? — Хабр Q&A

Привет, всем! Мне 28 лет и я решил начать изучение программирования. В далеком прошлом я интересовался компьютерной тематикой, но потом, сглупив, забросил и завернул не туда. Сейчас я хочу определиться с перспективами и попробовать — отсюда ряд вопросов, для удобства разбитых на блоки.

Б1: РЫНОК ТРУДА И ПЕРСПЕКТИВЫ.

Б1.1. Какая специальности в программировании наиболее открыты и дружелюбны к джуниорам?
Каковы перспективы развития?

Б1.2. На какие специальности можно выучиться до джуниора за наиболее короткий срок?

Б1.3. В общих чертах, что должен знать и уметь джуниор? До какого уровня учиться?

Б1.4. Каковы шансы устроиться джуниором в сферу C++? И, с учётом сложности языка, стоит ли мне рассматривать эту сферу в свои года?

Б2: ОСНОВЫ ПРОГРАММИРОВАНИЯ\БАЗА.

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

Б2.1. Хотел бы узнать наиболее полный список действительно нужных тем и дисциплин computer science.
И хотел бы узнать лучшие источники (курсы\книги) знаний по этому списку.
Идеально, если это цельная программа в одном месте.

Б2.2. Покрывают ли потребность в теории курсы Introduction To Computer Science от MIT и Harvard? Стоит ли их проходить?

Б2.3. Что ещё из теории помимо основ computer science нужно программисту?
К примеру, есть тематика «введение в программирование» и «software developing» — нужно ли изучать ещё и эти темы или в них тоже самое, что и в computer-science?

Б2.4. Хотел бы узнать наиболее полный список действительно нужных математических дисциплин для программиста? И лучшие курсы\книги для изучения этого?

Б3: ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Б3.1. Сколько языков нужно знать джуниору?

Б3.2. С какого языка следует начать обучение? Наиболее перспективный и гибкий (используется в различных сферах и специальностях) и лучший для изучения? И какой язык к нему следует добавить в дальнейшем?

Б3.3. Посоветуйте самые качественные проработанные курсы\книги для изучения рекомендуемых языков.(можно на английском и можно платные)

Б3.4. Насколько сильно версии одного и того же языка отличаются друг от друга? Как долго времени занимает изучение новой версии языка?

Б3.5. Что вы можете сказать о курсах Treehouse?

Б3.6 Стоит ли мне начать изучения с языка C++? Я наслышан о том, что он достаточно сложен и это наводит на мысли, что я могу очень долго провозиться с ним.

Заранее большое спасибо всем, кто окажет помощь!

PS Тем, кто также находится в процессе обучения — пишите на почту [email protected] Сможем делиться опытом и наработками. Буду рад общению!

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

В свое время когда я начинал программировать с QBasic`а и TurboPascal`a, особых вариантов куда дальше развиваться не было: С++. Реальный язык для решения реальных задач.

Для работы с GUI в Win логичным продолжением было Delphi и С++Builder. MFC от M$ был настолько корявый (по моему мнению), что даже смотреть в его сторону не хотелось.

Затем меня надолго унесло в сторону микроконтроллеров и там С/C++ мне помог в работе наиболее полно: быстрые программы, полный контроль над памятью — то, что нужно.

Потом, мне опять понадобился GUI. Как раз .NET и С# к этому моменту поборол свои детские болезни. С# мне показался очень цельным языком и легким в обучении. С С# я наиболее полно разобрался с ООП (в С++ я с ООП как-то плавал: не складывалась цельная картина). Сейчас C# продолжает развиваться. Это современный язык. Есть много задач, для которых он идеальный инструмент. Впрочем С++ не отстает и современные спецификации тоже включают в себя практически все новинки. Но все равно С++ сложнее: есть куча способов запнуться на ровном (как минимум с точки зрения С#) месте, муторная работа с памятью.

Сейчас при работе .NET с С# иногда возникает необходимость работать со старыми библиотеками, написанными на С++. В .NET есть такой язык как С++/CLR, который с одной стороны умеет работать с .NET, а с другой стороны спокойно работает с «чистым» С++ и становится спасительным мостиком в таких случаях. Кроме того, пару раз мне приходилось реализовывать в С++/CLR сложные, с вычислительной точки зрения, задачи. Сейчас правда вижу, что можно тоже самое было сделать не выходя за рамки С#, но в С++ это получилось все равно сделать проще.

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

Совет, наверное, стоит сделать такой: изучайте С# для GUI, попробуйте для развлечения поковыряться с микроконтроллерами: там где реально нужно будет самому на С++ писать. Можно, например, для ардуино на с++ писать: и паять не нужно ничего, и стоит недорого. Не скетчи, а именно разобраться как с С++ работать.

А еще смотрите другие языки: JavaScript, Python, функциональное что-нибудь. Главное чтоб мозги не костенели в какой-нибудь одной парадигме, а могли смотреть на задачу максимально широко.

Author: admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *