1. Сколько времени это у вас заняло? Полтора года ушло пока я перепробовал кучу языков, гонял на хакатоны - пытался найти свое короче. Питон, Си шарп, Джава - все это казалось очень классным и оплачиваемым, да и вакансий много. Питон - вроде бы везде пиарили его необходимость в обычной жизни, решил попробовать. По факту учить ужасно просто, но все вакансии плотно завязаны либо на джанге (основной веб-фреймворк для веб-приложений), либо же все идет в сторону машинки, нейронных сетей и тд. Джава - денег много, корпоративно, но определенно язык не самый лучший для самообучения, ООП в джаве мне вообще сначала показался каким-то битым, даже пошел поучиться в специалист на курсы по этому ЯП. Си шарп - похожая история с джавой. В итоге пришел в Ruby. Сначала конечно сломалось лицо от магии языка, ноооо есть классные ресурсы full-road-to-developer и как-то пошло поехало. (по сложности - около питона). Учил по ресурсам примерно полгода. Потом еще 10-15 потерянных собеседований и вот ты джун.
2.Какой язык вы порекомендуете выучить человеку без математического образования? Ruby, Js. Если не математика, то начни с веба. А потом гуляй по курсере и учи матан сколько угодно.
3. Его лучше учить самому или в специальной школе? Зависит от денег и от школы. Много школ сейчас тупо шарлатанят на "войти в айти до двадцати". Я бы сказал так, лучше учиться самому, но найти чувака, кто сможет делать базовый код-ревью.
4. Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах? В Москве наверное абсолютно крутые ребята это thinknetica. Расписывать не буду, но знаю много классных специалистов, которые вышли оттуда. Даже было обидно, что в свое время сразу к ним не пошел.
5. Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов? Да, но лучше держать в голове(и в гитхабе) какой-нибудь проект и пытаться нацепить на него все свои знания, так серое вещество кладет информацию эффективней.
6.Какие сайты, блоги или книги вам помогали? theodinschool - если знаем инглиш codenamecrud - если не знаем инглиш (но учить надо) И у Майкла Хартла есть крутой туториал-книга по Rails 5 с нуля
Питон - вроде бы везде пиарили его необходимость в обычной жизни, решил попробовать. По факту учить ужасно просто, но все вакансии плотно завязаны либо на джанге (
Знать язык - это малое, чему необходимо научиться. Это как овладеть молотком. Но ведь нужно уметь делать "столы и стулья". А для этого нужно владеть технологиями. А то так и останетесь "малышом, которому везде мерещатся гвозди"
Это из разряда, если бы человек спросил: у меня стартап, хочу прокачать менеджерские скиллы, что порекомендуете. А ему говорят, менеджерские скиллы — это малое, чему необходимо научиться. Нужно выстраивать бизнес-процессы. А то так и останетесь "малышом, которому везде мерещатся сотрудники"
Если бы вы дали более развернутый ответ, что за технологиями или знаниями надо владеть, было бы намного полезнее.
Например, алгоритмизация, структуры данных, шаблоны проектирования, сети, операционные системы, базы данных — это нужно/не нужно, в какой последовательности, почему итп. Это бы помогло и задающему и другим, кто читает комментарии.
Ненормальная причина становиться разработчиком. Нужно любить то что делаешь и в данном случае хотеть программировать. Иначе обречено на провал. И журналистов пока никто не заменил. Поменьше нужно верить в столь сильные словосочетания как ИИ. Если ты что-то делаешь круто в любой осмысленной области - будет успех и никто тебя не сократит/заменит.
Да какая разница какой язык. Имхо начинать нужно с основ алгоритмизации. С блок-схем, например. Когда решение простых алгоритмов будет на уровне автоматизма (т.е. базовые структуры, как ветвления, повторения, присвоение будут на уровне подсознания), можно определиться с тем, что тебе интересно: - веб - мобайл - интерпрайз (Во всякие ИИ, без хорошего фундамента по-моему лезть точно не стоит со старта)
И там копать, копать... смотришь и уже работаешь нормальным таким формошлепом.
Тем более, что в программирование на постСССР идут в основном из-за денег. Платили бы за написание сказок столько - люди пошли бы в писатели-сказочники.
Во первых в интернете есть диаграмма, приатачил к коменту. Во вторых не важно, любой ЯП в азах довольно прост (как выучить грамоту), сложно писать сложные программы (как стать писателем). Я будучи начинающим программером в течении нескольких лет спокойно выучил Делфи, ПХП, HTML, JS, Java, C#, C++, Prolog. На базовом уровне, но пофигу, написал вполне работающие хоть и простые программы. В третьих зависит от подхода, желания и цели. Для развлечения: Юнити Для академического изучения как всё работает: ассемблер, си, плюсы, джава. Для того чтобы устроиться на высокооплачиваемую работу: Джава, в ней выше потолок возможностей по ЗП. Для личного удовольствия от кодинга: Котлин, Си шарп. Для того чтобы попарить мозги: любую функциональщину. И так далее. При этом. Знания ЯП это примерно процент от необходимого для программиста. Я написал статью где попытался объяснить почему https://blog.itschool-hillel.org/articles/programeriya-ili-chto-nuzhno-znat-programmistu
- Начинал с Object Pascal и заняло около 3 месяцев, чтобы начать писать свои первые десктоп приложения. Через 2 года отдал предпочтение PHP и web разработке, т.к. быстрее можно творить и быстрее получать обратную связь. - Рекомендую python, т.к. все сложности спрятаны под капотом и остается только решать стоящие перед программистом задачи. Почитать: Лутц М. "Изучаем Python, 4-е издание" - Я бы не тратил время на офлайн курсы. Единственный плюс - мотивация, т.к. надо ножками дойти и послушать лекцию, а потом еще и практику успешно пройти, да экзамен сдать - Да, эффективно. Но нужно понимать, что на этих курсах вы узнаете как устроен молоток и изучите пару примеров, как наносить удары по гвоздям. Пример хороший онлайн школы https://www.codecademy.com/ - Читать: https://habrahabr.ru/ + https://toster.ru/ https://stackoverflow.com/
Чтобы я рекомендовал будущему программисту
1. Мотивация Порог вхождение в программирование высок и чтобы преодолеть его, нужно запастись немалым терпением. Примерный набор знаний web-программиста на языке PHP: html, css, javascript, linux, http, nginx, php-fpm, vcs, sql, php, composer, psr, phpdoc, oop, phpunit, etc Из этого всего язык программирования только php.
Пусть это будут даже деньги, но мотивация должна быть. Без нее велика вероятность бросить.
3. Выбрать язык Какие задачи вы хотите решать? Программировать микроконтроллеры? Делать сайты? Писать десктопные приложения? Мобильные? Разрабатывать игры? В интернете легко найти информацию, какой язык для чего подходит. С конкретным языком, возможно, облегчит выбор два сайта (eng): https://learnxinyminutes.com/ http://hyperpolyglot.org/ На них вы наглядно увидите, что из себя на практике представляет тот или иной язык программирования.
4. Выбрать онлайн курс, книгу, школу. Не важно как, но нужно заложить теоретические знания выбранного языка.
6. Для общего развития прочитать классику: - Эндрю Хант, Дэвид Томас "Программист-прагматик. Путь от подмастерья к мастеру" - Мартин Р. "Чистый код. Создание, анализ и рефакторинг" - М. Фаулер "Рефакторинг. Улучшение существующего кода" - Эрик Фримен, Элизабет Фримен, Кэтти Сьерра, Берт Бейтс "Паттерны проектирования"
Прежде чем описывать ЯП, хочу сказать пару важных слов о том, как устроена экосистема работы разработчика в целом. Программирование это инженерная специальность, поэтому легко привести аналогии из физического мира. Как и в любом строительстве, в программировании существует несколько уровней компетенций:
1. Умение пользоваться молотком, отвёрткой, шпателем и т.д. Это уровень языка программирования, но в нём это будут умения загрузить файл, принять пакет по сети, вывести сообщение в лог или отсортировать массив. Базовый уровень, необходимый всем программистам. Это то, чему обычно учат в онлайн-курсах или в курсах освоения ЯП за три месяца.
Этот уровень компетенций совершенно не подразумевает понимания того, как всё на самом деле работает. Точно так же, как вы можете не понимать принцип фиксации самореза в стене, так и кодер начального уровня может не знать устройство алгоритмов сортировки. Но их знание позволяет писать более устойчивый, безошибочный и быстрый код.
Программисты такого уровня востребованы в индустрии, но конкуренция будь здоров — три месяца найти не проблема, а получать комфортную з/п, сидя в уютном офисе хотят многие.
2. Умение сделать ремонт в квартире. Здесь уже появляется бизнес-задача. Заказчик (в случае программиста этого уровня — техлид) приходит и ставит небольшую, но комплексную задачу. На этом уровне уже понадобится самому сообразить, как использовать базовые умения, чтобы прийти к поставленной цели.
Пример этого уровня — веб-программисты в небольших компаниях. Задачи несложные, нагрузка умеренная, но нужно всё делать аккуратно и в срок. Конкуренция опять же большая, риск автоматизации высок, но работа есть. Этому можно научиться на курсах (вы же будете делать итоговый проект!), но уже требуется вложить инициативу и попробовать что-нибудь сделать самому. С этого уровня начинает иметь значение опыт.
3. Умение построить дом. Каждый следующий уровень подразумевает освоение предыдущих. На этой ступени вам уже придётся продумывать архитектурные вещи, проектировать фундамент, перекрытия и учитывать сопротивление материалов. Базовая задача — чтобы дом не рухнул при постройке. Задача максимум — чтобы в нём было комфортно и безопасно жить.
Здесь уже требуется не только профессиональное образование, но и опыт. Как никто не подпустит зелёного выпускника строить дом, так никто не разрешит вам сходу проектировать целые приложения. Сначала придётся записаться в подмастерья и быть на подхвате — писать конфигурационные файлы, решать небольшие задачи, учиться проектировать и чувствовать свою постройку. Через некоторое время самому построить небольшой домишко. Если хорошо проявите себя — вам уже доверят строить многоквартирные дома.
Этому невозможно сходу научиться ни на каких курсах. Но есть и хорошие новости. Ответственность в мире программирования немного мягче, поэтому вы можете учиться строить свои дома в небольших конторах со средней зарплатой и широким кругом обязанностей. Хотя путь подмастерья в большой компании пусть и не такой весёлый, но куда более эффективный.
4. Умение построить микрорайон. Ключевое слово на этой ступеньке профессионального развития — взаимодействие. Вы не просто строите отдельные дома, вы разворачиваете целую инфраструктуру. Чтобы можно было с утра выехать из двора, вечером заехать, снабжать дома водой, газом и теплом, обеспечивать населению доступ к социальным услугам.
В мире программирования это построение экосистемы — развёртывание микросервисной архитектуры, настройка взаимодействия, интеграция с внешними и внутренними системами. Здесь нужно иметь технологический кругозор, понимать принципы и подводные камни сетевого взаимодействия и обладать определённой интуицией.
Перейти на этот уровень можно только освоив предыдущие ступеньки и только через практику и опыт. Интуиция не нарабатывается через чтение книг и просмотр видео.
5. Умение возвести, обслуживать и постоянного перестраивать город-миллионник. Это высшая ступенька мастерства, на которую взбирается не так много людей. Представьте себе большую социальную сеть. Миллионы пользователей в день, тысячи серверов, тысячи бизнес-клиентов, десятки тысяч приложений сторонних разработчиков и колоссальная ответственность.
Здесь уже громадный практический опыт и мощная профессиональная интуиция играют решающую роль.
В общем и целом, чтобы получить работу программиста с хорошим окладом, вам нужно как минимум запрыгнуть на третий уровень компетенций. Это абсолютно реально и без профессионального образования, но это никак не расслабленный просмотр обучающих видео два раза в неделю. Начинайте с основ, читайте книги, подписывайтесь на Хабр, смотрите видео с конференций, задавайте вопросы на форумах. И главное: постоянно практикуйтесь.
Практика создаёт каркас для знаний замысловатой формы, который мы называем опытом. Без этого никакой инженерный навык не представляет ценности в реальном мире.
-Сколько времени это у вас заняло? Пол года по 30 часов в неделю досточно освоить первый ЯП и фреймворм, например, для веб разработки. Написать свой домащний проект на нём и искать работу новичка.
-Какой язык вы порекомендуете выучить человеку без математического образования? Python достаточно прост в изучении. При этом язык реально используется, если пойдёте по пути Data Science или Web Development. В отличии от Паскалей и прочих чисто учебных языков.
Если вы уже знаете, что какое направление вам интереснее, то и язык выбрать проще: -Машинное обучение, большие данные: Python, R -Передняя часть, которая в браузере: Javascript, Typescript(это улучшеный Javascript, используется в Angular), Angular или React -Передняя часть, бизнес приложений на мобилках: ObjectiveC, J -Задняя часть бизнес приложений сейчас вся на веб сайтах: Java, C#, GO -Игры: C++ для UnrealEngine или C# на Unity3D
Выбрать язык можно по реальным вакансиям на сайтах по подбору. Есть вакансии для поддержки всякого старья, которое было написано лет 10 назад, но большинство вакансий для новых проектов на актуальных технологиях. Для успеха вам нужно: -чтобы это получалось; -чтобы было интересно этим направлением заниматься (машинное обучение, мобилки или бекенд, смотря что выбирете). Интересно как правило то, что получается; -чтобы это имело значение, было полезно для других; -чтобы это было востребовано на рынке и за это платили.
Посмотрите в вакансиях, какие языки и фреймворки требуются заказчику. Они там пишут в вакансиях все знания сразу на lead разработчика, даже если должность junior. На самом деле это пожелание и не обязательно всё знать из перечисленного, только честно скажите на собеседовании что знаете, а то нет. Опыт реальных проекто или домашних всё считается.
-Его лучше учить самому или в специальной школе? Кому как. Мне лично хватило курсов на всяких Udemy, Coursera, Udacity, Pluralsight для изучения C# и написания домашних проектов. Ещё читал книжки
-Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах? Не знаком с этим вопрос. Тут всякому разное подходит для обучения, у меня как-то без школ вышло. Может со школой получилось бы быстрее стартануть в нужном направлении.
-Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов? Особенно если владеешь английским языком и знаешь, что учить. А такое знание приходит из требований заказчиков. Перед тем как выдумывать как решать задачу неплохо бы поискать, спросить на форумах, кто её уже решал до вас и есть ли готовые инструменты. Тогда будет мотивация их изучать т.к. это реально пригодиться в работе, а не просто выучено для галочки.
На мой вкус авторы курсов с Pluralsight хороши, но у меня почти не было опыта обучения на других сайтах. Сейчас присматриваюсь к WintellectNow т.к. бесплатную подписку на Pluralsight больше не дают, только WintellectNow и парочку других, где меньше курсов. Пришлось купить Pluralsight аккаунт, стоит того. Поищите в поисковике статьи по "Pluralsight бесплатный аккаунт на 3 месяца" через сайт visual studio. Метод остался, только сайты с курсами по программе другие. Ну и в торрентах многое выложено.
-Какие сайты, блоги или книги вам помогали? Для изучения веб разработки на ASP.NET понравилась книжка "Разработка Web-приложений в среде ASP.NET 2.0. Задача-проект-решение" Из плюсов: +Там по главам идёт написание реального проекта на технологии ASP.NET. Не просто перечисление всех возможностей фреймворка, а то что используется в 80% проектов. Из минусов: +Она частично устарела уже на момент моего прочтения, поэтому знающий человек подсказал, что главы про работу с базой данных можно пропускать и сразу делать по другому. Это уже делается по новому. -На сегодня она устарела уже на 100%, но обратите внимание на сам подход обучения на примере решения прикладной задачи. Он, кстати, используется по многих онлайн курсах типа Udemy,...
-От себя Есть несколько ступеней понимания тенологии: языка программирования, фреймворка, библиотеки или какого-то инструмента. После 2 ступени уже можно искать работу пионером по этой технологии.
1)Общая теоретическая, на что способна технология и знание базовых команд. Достаточно нескольких курсов c Pluralsight, Udemy, Coursera, Udacity, что вам больше нравится. 2)Практическая. Нужно использовать для написания какого-то своего мелкого проекта. Будет откуда потом скопипастить уже проверенный код и затем улучшать его. Грубо говоря нужно уметь использовать на практике 20% возможностей технологии, которые используются в 80% задач. 3)Продвинутое знание, которое получаешь уже из долгой работы с технологией и решения всяких редких задач.
Нужно знать о наличии всех возможностей технологии, с которой вы работаете, чтобы при необходимости прочитать про них. Если сразу взять книжку размером 1500 страниц по технологии ASP.NET, например, и всю прочитать, написать все примеры кода из неё, то можно выучиться и на продвинутый уровень сразу. Но это не очень рационально. Лучше читайте параллельно с применением на практике. Работа над своим домашним проектом или реальным заказом в компании сама подскажет на что обратить внимание из продвинутого, а что редко используется. Подскажет в какую сторону развиваться.
Python. Очень хорошо подходит для автоматизации процессов. Хочешь что-то упростить - напиши скрипт и пусть это делается само :) Ну и это дает толчек к изучению, делаешь что-то каждый день - автоматизируй это, думаю у каждого есть такая задача. Ну и сам по себе язык довольно простой для изучения под такую задачу, потом можно уже глубже копать
Python, если дать ответ на вопрос. Но, как здесь уже написали, знать синтаксис языка - это даже не 50%. Гораздо более важно думать логично, думать прагматично, понимать алгоритмы и уметь самому их применять. Не только в программировании, кстати, - в жизни. Решать алгоритмически повседневные задачи. Уметь представлять себе проект или создаваемую сущность, из чего оно будет состоять (объекты), что и как делать (методы, функции, классы).
Каждый раз смешно с того как люди упоминают математическое образование, думая что они там формулы будут какие-то решать. Вышка по матану и смежным областям понадобится только продвинуттым людям в определенных областях (которые кодят уже несколько лет), либо как минимум смышленым интернам в топ компаниях в специалазированных отделах связанных со всякими там AI/ML, после окончания соответствующих топ вузов и прохождения всяких там стажировок. Проще говоря - не углубляясь сознательно в околоматематические вещи, вы с 99.99% вероятностью никогда с ними не сможете встретится в первые годы программирования, если конечно не начнете рассылать резюме наугад.
Математика — это как спортивная гимнастика для мозга. Практических навыков получаете мало, но наука вам даёт эластичность мышления. Просто мозг начинает работать по-другому.
Это нельзя количественно измерить, но разница есть. Это интуитивно понимают работодатели, поэтому выпускников кафедр с сильной математикой и физикой (та же математика вид сбоку) расхватывают на ура.
Новичку - JS, но сразу в ES6. Не требует строгости, сразу виден результат - не нужны сложные среды, Си-подобный - можно легко переучиться на другие, углубляемый - можно копнуть или в ноду, или в фуллстек фреймворки, полезный - можно найти много работы тупо по фронтенду, развитый - самое большое сообщество и куча готового кода. Минусы: ужасная архитектура, и даже сама нода, которая должна была стать развитием идеи, является ещё большим её ухудшением. Т.е. свои проекты только небольшого размера можно поднять.
Главный принцип: выучить простой и популярный язык, типа JS, и с него перейти на что-то более нужное. Потому что в прогинге главное не язык, а само программистское мышление, умение строить и маленькие циклы и большие архитектуры. А язык сегодня изучается быстро, почти все они срисованы с Си
вы бы лучше написали-это я для комментаторов, какая мотивация была учить? Почему начали учить язык? Это объяснит больше, чем какой язык и что нужно знать. Знать нужно столько, сколько нужно, чтобы решить проблему)
Странно, что никто не упомянул Swift. Многие советуют начать новичку с некомпилируемых языков. Например, Javascript. Не говоря уже о том, что JS полон всяких штук, которые новичка только запутают, а избежать их нельзя (типа callback-ов), так интепретируемые языки обладают, как правило, двумя неприятными для новичка чертами: 1) нестрогая типизация и 2) нет ошибок компиляции (потому как интерпретатор же). По-моему, лучше новичку один раз разобраться с типами данных, чем постоянно напарываться в программах на ран-тайм исключения или еще того хуже - на «странное» поведение программы. Что касается ошибок, обнаруживаемых на стадии компиляции, то это благо невозможно переоценить, потому что скорость изучения языка в значительной степени зависит от скорости обратной связи от верификатора, который на каждый чих говорит «правильно-неправильно». Еще лучше, когда такому верификатору помогает хорошая IDE, которая умеет обнаруживать синтаксические, семантические и прочие ошибки «налету», то есть прямо во время написания кода, а не во время компиляции. Представьте себе, что вам нужно выучить английский язык. И вот вам в голову внедряют чип, на который записан Grammarly. И все, что вы говорите или думаете по-английски, мгновенно получает качественную обратную связь от Grammarly. Насколько быстро вы бы выучили язык? Погружение в языковую среду тоже хорошо работает, потому что верификаторами являются окружающие вас люди, дающие мгновенную обратную связь. Наверное, лучший способ выучить английский - жениться на американке, уехать в Америку и ни в коем случае не общаться с русскими. Шутка)) Еще раз. Интерпретаторы откладывают сообщения об ошибках на неопределенный срок и это может сильно осложнить жизнь новичку. Для интерпретаторов, как правило, не существует хороших IDE (я не имею в виду редакторы). Многие советуют Python. Это простой язык, но я бы не стал с него начинать. Во-первых, он интерпретируемый. Во-вторых, он не С-подобный и обладает странным синтаксисом. На мой взгляд, нужно учить именно С-подобный язык, потому что тогда новичку открывается целый мир языков, имеющих наибольшее значение на сегодняшний день - С/С++, С#, Java, Javascript, Swift, Objective-C, Kotlin в конце концов! Исходя из вышесказанного, я считаю, что наиболее подходящими языками для новичка являются Swift и С#. Оба С-подобные, оба густо посыпаны синтаксическим сахаром (в отличие от очень сильно перченого С++), для обоих существуют прекрасные IDE (Xcode для Swift и Visual Studio для С#). C# выигрывает из-за кроссплатформенности (Windows, Android/iOs, Linux). Но Swift обладает, на мой взгляд, идеальным синтаксисом. Он прямо глянцевый, по-другому назвать не могу. А Xcode - почти идеальная IDE (имхо). Поэтому я бы выбрал Swift.
Первым и пока единственным выучил GML (язык в Game Maker Studio), но у меня была конкретная цель - делать игры. Ну как выучил, уже 10 лет учу и думаю еще столько же понадобится. До этого с отцом баловался бейсиком на ZX Spectrum. По математике было три/четыре. Учил по форумам и справкой, на пару с меджик гуди.
Считаю, что надо определится с целью и инструментом, а потом выбирать язык.
1. Первым учил Pascal в школе:) Затем его же в институте. Сложно сказать, сколько я его изучал, но на практике применял несколько лет - решал задачи на олимпиадах и лабораторные для однокурсников. Неплохо в свое время зарабатывал на "мертвом" и коммерчески неуспешном языке. Параллельно изучал PHP и первый сайт сделал на нем. Потом Python. На основы Питона ушло два дня. Но это потому, что уже знал два языка. Еще через пару месяцев делал на Питоне (+Django) сайты.
2. Python вполне норм. По крайне мере у него низкий порог вхождения и его можно использовать в реальных проектах. Плюс нужно хоть какое-то представление об алгоритмах.
3. Тут вам нужно самому выбрать удобный и эффективный для вас способ обучения. Кому-то хватает книг, другим видео-курсы, третьим нужен учитель. Всё индивидуально. Но главное в обучении - это не курс, книга или преподаватель, а мотивация ученика. Будет мотивация - будет прогресс. Ну и практика конечно. Без неё в программировании никуда. Правило 10 тыс никто не отменял.
4. С помощью онлайн-курсов учить эффективно.
5. Питон учил по книге Марка Лутца - "Изучаем Python". За всем остальным шел на StackOverflow.
Открою секрет: Вы не первый кто подумал "выучить самый простой язык программирования" Из этого следует, что чем проще язык - тем больше конкуренция. А по поводу автоматизации востребованы будут программисты m2m, те кто разбираются в нейросетях и ещё пара отраслей. Не просто так Греф сказал "век программистов окончен, настала эра энергичных людей"
Шарп самый красивый и логичный, особенно для новичков. Синтаксис красивый + студия сам помогает, что крайне немаловажно для новичка. Ну либо питон, но с ним все не так красиво и интуитивно, как на C#, зато можно быстро и на коленке клепать то, что хочешь.
Профессионал осваивает не знакомый ему язык за 1-2 недели. Через месяц-два начинает разбираться в тонкостях, о какой конкуренции может идти речь? В программирование надо понимать что и зачем ты делаешь, а на каком языке это уже дело вторичное.
Давать советы с чего легче начать - не буду. Лучше расскажу о своем пути. Начал в школе с паскаля, потом достаточно быстро перешел на изучение С, потом WinAPI, далее С++. В какой-то момент друг рассказал про PHP и веб-сайты, чем я и занялся. Лет через 5 появился Node.js. Последние года 4 пишу на ноде. Но как тут уже писали выше - язык не главное. Главное понимать принципы, фундаментальные структуры данных (работать со стеком или очередью можно как в JavaScript так и в С++), алгоритмы, ну и прочие прелести софтверной жизни.
1. Заодно расскажите, какой язык программирования вы начали учить первым? Начал сразу с Java(сейчас понимаю, что это был не самый лучший вариант для старта, для новичков достаточно тяжело с ходу его освоить). Позже к этому добавился JS, PHP.
2. Сколько времени это у вас заняло? До сих пор учусь)) На основы ушло около года, учить начал три года назад. Но это Java....
3. Какой язык вы порекомендуете выучить человеку без математического образования? Вот вообще не считаю отсутствие мат. образования проблемой при изучении языков! Это стереотипы. Попробовать начать наверно стоит с JS, он не так сложен в плане синтаксиса и интуитивно очень понятен.
4. Его лучше учить самому или в специальной школе? Зависит от усидчивости. Если умеешь учиться, то и школы не нужны. Очень много материала в интернете.
5. Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах? -- 6. Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов? см. п.4
PHP или JS, и веб в целом, английский язык тоже не забыть, а через год-два опыта уже можно начинать "валить" :) Учится быстрее наверное начав какой-то свой небольшой сайт/сервис/итп, так как нужна практика. Чистый PHP требуется имхо редко, обычно какой-то фреймворк (symfony, laravel, иногда yii), так что можно сразу с них и начинать (symfony популярнее в Европе в компаниях например, laravel чуть менее, но с симфони начинать слишком сложно, ларавел проще, yii еще проще наверное).
Не знаю текущую программу универов по обучении прогеров, но... 1. без мотивации, фанатичного желания и терпения - хрен что получиться. 2. программистом делает не язык а его сфера деятельность, знание необходимого материала(математика, алгоритмы, архитектуры...). это важно, без этого пустая/большая трата времени(чтобы не говорили выше). Это касается любой области деятельности хоть системное программирование хоть прикладное. Ps: аля jquery программистов это не касается.))) 3. нужно готовым что учение не закончится после окончании школ, универов... это постоянное обучение. 4. мое мнение универ с его программой отлично подходит, его задача не научить синтаксису языка, а дать необходимый багаж знаний - разного рода математик, разного рода материала необходимого для программирования. 5. сферу деятельности и язык/и выберите позже после начало осознания нужно ли оно вам. Единственное точно могу сказать ни курсы ни конфы, митапы не сделают из человека прогера.
я начал с pascal, потом жестко подсел на assembler(реверс инженеринг, вирмейкерством, крипто анализ) но тут все сложно но интересно. Потом был C/C++, python, qt, gtk и это показалось скучным(платят конечно не плохо). Сейчас это Go, Nodejs, php.
Java Script. Учусь на codecademy, уже 2 месяца, полет нормальный, заходит хорошо. До этого опыта не было. Планирую освоить семейство JS, на этом же сайте.
>Сколько времени это у вас заняло?Постоянно учишься и узнаешь новое сам. Попробуй реализовать какой-либо проект и в процессе решения задач научишься.
>Какой язык вы порекомендуете выучить человеку без математического образования?Распространенное заблуждение что нужно быть математиком чтобы программировать, это не так. Программист как правило знает много языков и выбирает нужный для задачи. Для сети много-много инструментов. Лучше начать с php7 и javascript - самые популярные синтаксисы (на их основе освоишь дофига всего).
>Его лучше учить самому или в специальной школе?Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?Лучше самому. Прочитать документацию. В google же не забанили.
>Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?По разному. По мне так они все для определенной категории людей. Те кто учится сам - потом могут без посредников доучится, переучится, освоить смежные области.
Заодно расскажите, какой язык программирования вы начали учить первым?Ассемблер и бейсик, паскаль потрогал только после появления чудо машины на i286. Сколько времени это у вас заняло?Месяца 4, может 5. Z80 ассемблер очень простой. Какой язык вы порекомендуете выучить человеку без математического образования?JavaScript или PHP. Для всего остального нужно хотя бы немного уметь статистику и тервер. Его лучше учить самому или в специальной школе? Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?Лучше пойти учиться либо во ВШЭ, либо на Физтех. Там преподают ребята из индустрии с хорошим бэкграундом в CS. В школах преподают люди без навыков разработки крупных проектов уровня Google Spanner. Если хорошо заботаешь математику, то стоит пойти в Школу Анализа Данных. Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?Эффективно, если есть бэкграунд. Без бэкграунда в CS будете веб морды для сайтов клепать. Какие сайты, блоги или книги вам помогали?Cracking the coding interview ;)
Вместо "Какой язык программирования легче всего выучить с нуля?" нужно спросить "Какой язык стоит учить с нуля?". На второй вопрос ответ: "Scheme по SICP". А не то, что ПТУшники тут в комментах пишут.
Вообще учить язык это одно, стать программистом совсем другое. Есть у меня знакомый который вроде как прогает, но в плане придумать велосипед для решения той или иной задачи, совсем нулевой. Я понимаю что все это приходит с годами и упорством(читать фанатизмом) в своей сфере, но все же, у кого-то лежит к этому голова, у кого-то совсем нет(как и с любым другим делом). ИМХО самый простой на сегодня путь это JS(ES), хотите фронт-энд, хотите бэк-энд, не удивлюсь если на нем уже можно и что-то "полноразмерное" в плане ПО (хотя я свято верю, что скоро все уйдет в веб) написать. Информации по нему вагон, документации хорошие, плагинов тьма, востребованность огромная.
Больше 20 лет из 35, было потрачено на программирование. Начало было лет в 11, ассемблере z80 - мультиколор, все дела - около 5 лет. По моим ощущениям стал кул-хацкером. Мог любую программу распотрашить через декомпилятор) и более того понимал что надо делать и куда смотреть, чтобы получить нужный результат. Потом появился у меня 386 - здесь я освоил ассемблер, почти все тоже самое, стеки, переходы, регистры, преррывания, защищенный режим... в общем переход от z80 к 86 был на ура. Opengl на асме можно делать, проверенно.. потом с++ все с теми же вставками из асма тоже было освоенно. Потом началась работа - заказчики гос.сектор, банки - здесь было очень много java, даже в базе данных и та жава)) итого около 10 лет, здесь также декомпиляция и т.д. Помимо этого был освоен пы-ха-пэ в нем трейты, нэймспейсы)) в нагрузку к нему html, css, и немного javascript. Потом оказалось javascript это не jquery), и тут появился nodejs. В общем теперь я на ноде... очень люблю reactjs+redux, могу собрать их так чтобы был сервер-сайд-рендеринг, i18n, l10n... в общем, переход на жаваскрипт был странным - асинхронный он наш весь такой, порог вхождения, как мне кажется здесь самый большой, конечно же если это не задачи уровня жуКвари). В целом программирование везде одинаковое. Но потом начинается http, https, tcp, udp... много страшных слов не попало в этот рассказ... С одной стороны из-под каждого куста кричат, учи язык такой и оставайся мальчик с нами будешь нашим королем) по факту если тебе 2х-30-и больше смысла нет этим заниматься (учить программирование), грубо говоря это как биткоин - вот он 7к$, а был 0.004цента) но поезд уже ту-ту)).. Чисто как хобби - тогда можно.
С поиском, работы тоже не все однозначно, тупо берем первые попавшиеся вакансии, и смотрим стек технологий - и к ним обязательное утверждение "идеальное знание того, сего.." - у меня вопрос, скорее к тому кто это формулирует, это как, с%&%))
Я не являюсь участником машинного зренеия/обучения, ИИ. У меня клиент-сервер... и прослоки между этим.. сюда и LDAP, и bash, и т.д.
Резюме: я выбираю javascript. Не могу точно сформулировать почему, но исходя из опыта и перспективы, интуиция располагает к этому.
Путь здорового программиста: 1. выучил английский 2. С (Керниган & Ричи, можно в переводе) 3. youtube -> поиск Jerry Cain (Stanford) дальше - все пох, кроме FPGA
Насколько я помню главное были не конкретные языки, изучали структурное программирование (паскаль,си-на выбор), функциональное -пролог,лисп(привет ИИ), затем объектно-ориентированное (Си++ и немного Javа), какие-то сайтики клепали, параллельно структуры данных, алгоритмы и куча математики. Ах да- компилятор своего микро ЯП накатали. Заняло это все лет 5-6 . Могу посоветовать только все вышеперечисленное =), но все-таки главное понять основные парадигмы программирования, а на чем вы их будете изучать - по большому счету неважно=)
Попробовал понять, много гуглил вчера. С точки зрения новичка (это я, например), который не определил в 15-20 лет программирование, как свою жизнь и основную профессию, а так, просто немного разобраться или решить определённые околопрограммерские бизнес-задачи, то набор такой:
JS - проще и полезно для новичка с определенными бизнес-задачами, потому что это веб (с моей точки зрения для широкого набора бизнес-задач сегодня веб не будет лишним).
А эти два берём как основу (другие языки тоже придётся затронуть, мягко говоря), если решил становиться программистом:
C++ это хардкор, но на нём можно всё. Java - потому что Андроид.
И тут зависит от того, в какую область нужно будет уходить/ что больше нравится - там и качать скиллы до бесконечности.
Помогите понять, почему Питона нет в моем списке? Про php сам сам разобрался, вроде. Он просто вне области моих абстрактных задач : )
Сам язык хорош, выравнивает руки и "заставляет" писать в ООП стиле. Первая работа на Java - более вероятно, что будет более профессиональная команда, а не вебстудия в подвале. В Java не нужно учить по фреймворку в сезон :)
Я в итоге, после 3-х лет Java переехал на JavaScript. JavaScript просто охуенен на мой взгляд, но к нему нужно подходить уже с опытом, иначе выйдет жопа.
Но как уже было неоднократно сказано выше, язык это лишь средство. Я бы не ставил себе цель "Изучить Java за 30 дней". На мой взгляд это не эффективно, лучше ставить цель "Сделать приложение для групповых велопрогулок" - это интереснее, но самое главное, в итоге, вы будете уверены, что умеете сделать продукт, а не написать код, а это уже другой уровень понимания.
Язык в юном возрасте любой осваивается за ночь. Гораздо сложнее - библиотеки, фреймворки, сервера приложений. Но и это все фигня. Еще сложнее научиться писать хороший код, который могут использовать другие участники команды разработки. Но и это фигня. Не фигня научиться проектировать большие системы. Впрочем и это тоже фигня. Совсем не фигня - это математика. Высший пилотаж уметь моделировать, правильно и доказательно использовать те или иные модели. Ну и в принципе понимать что делаешь и зачем это нужно. Совсем высший пилотаж - уметь применять все это в прикладных областях, т.е. знать еще что-то кроме математики и программирования.
Единственный язык, в котором я могу написать что-то более-менее полезное: Машинный код (86). Первое время даже дома применял. Однако я не нашёл рабочий мест в своей жизни, где он вообще кому-то нужен был. А другие в универе ну учил, ну может вспомню.
Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что-то не отпускало меня - я пошёл на python.org и стал изучать стандартную библиотеку, старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про PEP8. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту конвенцию по написанию питоньего кода. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.
Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.
1. Сколько времени это у вас заняло?
Полтора года ушло пока я перепробовал кучу языков, гонял на хакатоны - пытался найти свое короче.
Питон, Си шарп, Джава - все это казалось очень классным и оплачиваемым, да и вакансий много.
Питон - вроде бы везде пиарили его необходимость в обычной жизни, решил попробовать. По факту учить ужасно просто, но все вакансии плотно завязаны либо на джанге (основной веб-фреймворк для веб-приложений), либо же все идет в сторону машинки, нейронных сетей и тд.
Джава - денег много, корпоративно, но определенно язык не самый лучший для самообучения, ООП в джаве мне вообще сначала показался каким-то битым, даже пошел поучиться в специалист на курсы по этому ЯП.
Си шарп - похожая история с джавой.
В итоге пришел в Ruby. Сначала конечно сломалось лицо от магии языка, ноооо есть классные ресурсы full-road-to-developer и как-то пошло поехало. (по сложности - около питона). Учил по ресурсам примерно полгода. Потом еще 10-15 потерянных собеседований и вот ты джун.
2.Какой язык вы порекомендуете выучить человеку без математического образования?
Ruby, Js. Если не математика, то начни с веба. А потом гуляй по курсере и учи матан сколько угодно.
3. Его лучше учить самому или в специальной школе?
Зависит от денег и от школы. Много школ сейчас тупо шарлатанят на "войти в айти до двадцати".
Я бы сказал так, лучше учиться самому, но найти чувака, кто сможет делать базовый код-ревью.
4. Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?
В Москве наверное абсолютно крутые ребята это thinknetica. Расписывать не буду, но знаю много классных специалистов, которые вышли оттуда. Даже было обидно, что в свое время сразу к ним не пошел.
5. Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?
Да, но лучше держать в голове(и в гитхабе) какой-нибудь проект и пытаться нацепить на него все свои знания, так серое вещество кладет информацию эффективней.
6.Какие сайты, блоги или книги вам помогали?
theodinschool - если знаем инглиш
codenamecrud - если не знаем инглиш (но учить надо)
И у Майкла Хартла есть крутой туториал-книга по Rails 5 с нуля
Комментарий удалён модератором
Комментарий недоступен
рельсы мертвы.
а можно примеры толковых проектов на гитхабе?
Тот случай, когда комментарий лучше статьи
Питон - вроде бы везде пиарили его необходимость в обычной жизни, решил попробовать. По факту учить ужасно просто, но все вакансии плотно завязаны либо на джанге (
И поэтому ты выбрал Рельсы?
Знать язык - это малое, чему необходимо научиться. Это как овладеть молотком. Но ведь нужно уметь делать "столы и стулья". А для этого нужно владеть технологиями. А то так и останетесь "малышом, которому везде мерещатся гвозди"
По-моему, ваш ответ мало чем помогает человеку.
Это из разряда, если бы человек спросил: у меня стартап, хочу прокачать менеджерские скиллы, что порекомендуете. А ему говорят, менеджерские скиллы — это малое, чему необходимо научиться. Нужно выстраивать бизнес-процессы. А то так и останетесь "малышом, которому везде мерещатся сотрудники"
Если бы вы дали более развернутый ответ, что за технологиями или знаниями надо владеть, было бы намного полезнее.
Например, алгоритмизация, структуры данных, шаблоны проектирования, сети, операционные системы, базы данных — это нужно/не нужно, в какой последовательности, почему итп. Это бы помогло и задающему и другим, кто читает комментарии.
А если снабдить ссылками на ресурсы и книги (к примеру, https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670), то будет вообще замечательно.
Ненормальная причина становиться разработчиком.
Нужно любить то что делаешь и в данном случае хотеть программировать. Иначе обречено на провал.
И журналистов пока никто не заменил. Поменьше нужно верить в столь сильные словосочетания как ИИ.
Если ты что-то делаешь круто в любой осмысленной области - будет успех и никто тебя не сократит/заменит.
Да какая разница какой язык. Имхо начинать нужно с основ алгоритмизации. С блок-схем, например. Когда решение простых алгоритмов будет на уровне автоматизма (т.е. базовые структуры, как ветвления, повторения, присвоение будут на уровне подсознания), можно определиться с тем, что тебе интересно:
- веб
- мобайл
- интерпрайз
(Во всякие ИИ, без хорошего фундамента по-моему лезть точно не стоит со старта)
И там копать, копать... смотришь и уже работаешь нормальным таким формошлепом.
Тем более, что в программирование на постСССР идут в основном из-за денег. Платили бы за написание сказок столько - люди пошли бы в писатели-сказочники.
Поддерживаю. Плюсую. Начинать надо с алгоритмов.
Во первых в интернете есть диаграмма, приатачил к коменту.
Во вторых не важно, любой ЯП в азах довольно прост (как выучить грамоту), сложно писать сложные программы (как стать писателем). Я будучи начинающим программером в течении нескольких лет спокойно выучил Делфи, ПХП, HTML, JS, Java, C#, C++, Prolog. На базовом уровне, но пофигу, написал вполне работающие хоть и простые программы.
В третьих зависит от подхода, желания и цели.
Для развлечения: Юнити
Для академического изучения как всё работает: ассемблер, си, плюсы, джава.
Для того чтобы устроиться на высокооплачиваемую работу: Джава, в ней выше потолок возможностей по ЗП.
Для личного удовольствия от кодинга: Котлин, Си шарп.
Для того чтобы попарить мозги: любую функциональщину.
И так далее.
При этом.
Знания ЯП это примерно процент от необходимого для программиста. Я написал статью где попытался объяснить почему https://blog.itschool-hillel.org/articles/programeriya-ili-chto-nuzhno-znat-programmistu
Очень субъективная картинка (а по другому сложно нарисовать), в php в примеры какие-то тухлые. Нет fb, badoo, vk
Go нету
А где единственный мне знакомый и изучаемый 4 года х86(
- Начинал с Object Pascal и заняло около 3 месяцев, чтобы начать писать свои первые десктоп приложения. Через 2 года отдал предпочтение PHP и web разработке, т.к. быстрее можно творить и быстрее получать обратную связь.
- Рекомендую python, т.к. все сложности спрятаны под капотом и остается только решать стоящие перед программистом задачи. Почитать: Лутц М. "Изучаем Python, 4-е издание"
- Я бы не тратил время на офлайн курсы. Единственный плюс - мотивация, т.к. надо ножками дойти и послушать лекцию, а потом еще и практику успешно пройти, да экзамен сдать
- Да, эффективно. Но нужно понимать, что на этих курсах вы узнаете как устроен молоток и изучите пару примеров, как наносить удары по гвоздям. Пример хороший онлайн школы https://www.codecademy.com/
- Читать:
https://habrahabr.ru/ + https://toster.ru/
https://stackoverflow.com/
Чтобы я рекомендовал будущему программисту
1. Мотивация
Порог вхождение в программирование высок и чтобы преодолеть его, нужно запастись немалым терпением.
Примерный набор знаний web-программиста на языке PHP: html, css, javascript, linux, http, nginx, php-fpm, vcs, sql, php, composer, psr, phpdoc, oop, phpunit, etc
Из этого всего язык программирования только php.
Пусть это будут даже деньги, но мотивация должна быть. Без нее велика вероятность бросить.
2. Изучить фундамент
Один из лучших путей достижения этой цели - cs50 от Гарварда
https://www.edx.org/course/introduction-computer-science-harvardx-cs50x (eng)
https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5 - на русском
Курс также добавит мотивации изучать программирование
3. Выбрать язык
Какие задачи вы хотите решать? Программировать микроконтроллеры? Делать сайты? Писать десктопные приложения? Мобильные? Разрабатывать игры?
В интернете легко найти информацию, какой язык для чего подходит.
С конкретным языком, возможно, облегчит выбор два сайта (eng):
https://learnxinyminutes.com/
http://hyperpolyglot.org/
На них вы наглядно увидите, что из себя на практике представляет тот или иной язык программирования.
4. Выбрать онлайн курс, книгу, школу. Не важно как, но нужно заложить теоретические знания выбранного языка.
5. Практика. Много практики
К примеру, ее можно найти на этих сайтах (eng) в интересной игровой форме:
https://www.codingame.com/
https://www.codewars.com/
https://checkio.org/
https://www.kaggle.com/
6. Для общего развития прочитать классику:
- Эндрю Хант, Дэвид Томас "Программист-прагматик. Путь от подмастерья к мастеру"
- Мартин Р. "Чистый код. Создание, анализ и рефакторинг"
- М. Фаулер "Рефакторинг. Улучшение существующего кода"
- Эрик Фримен, Элизабет Фримен, Кэтти Сьерра, Берт Бейтс "Паттерны проектирования"
7. Всегда учиться
Удачи
Выбирать надо не язык, а экосистему. Причём ту, что развивается, а не умирает. Это резко ограничивает диапазон выбора.
Прежде чем описывать ЯП, хочу сказать пару важных слов о том, как устроена экосистема работы разработчика в целом. Программирование это инженерная специальность, поэтому легко привести аналогии из физического мира. Как и в любом строительстве, в программировании существует несколько уровней компетенций:
1. Умение пользоваться молотком, отвёрткой, шпателем и т.д. Это уровень языка программирования, но в нём это будут умения загрузить файл, принять пакет по сети, вывести сообщение в лог или отсортировать массив. Базовый уровень, необходимый всем программистам. Это то, чему обычно учат в онлайн-курсах или в курсах освоения ЯП за три месяца.
Этот уровень компетенций совершенно не подразумевает понимания того, как всё на самом деле работает. Точно так же, как вы можете не понимать принцип фиксации самореза в стене, так и кодер начального уровня может не знать устройство алгоритмов сортировки. Но их знание позволяет писать более устойчивый, безошибочный и быстрый код.
Программисты такого уровня востребованы в индустрии, но конкуренция будь здоров — три месяца найти не проблема, а получать комфортную з/п, сидя в уютном офисе хотят многие.
2. Умение сделать ремонт в квартире. Здесь уже появляется бизнес-задача. Заказчик (в случае программиста этого уровня — техлид) приходит и ставит небольшую, но комплексную задачу. На этом уровне уже понадобится самому сообразить, как использовать базовые умения, чтобы прийти к поставленной цели.
Пример этого уровня — веб-программисты в небольших компаниях. Задачи несложные, нагрузка умеренная, но нужно всё делать аккуратно и в срок. Конкуренция опять же большая, риск автоматизации высок, но работа есть. Этому можно научиться на курсах (вы же будете делать итоговый проект!), но уже требуется вложить инициативу и попробовать что-нибудь сделать самому. С этого уровня начинает иметь значение опыт.
3. Умение построить дом. Каждый следующий уровень подразумевает освоение предыдущих. На этой ступени вам уже придётся продумывать архитектурные вещи, проектировать фундамент, перекрытия и учитывать сопротивление материалов. Базовая задача — чтобы дом не рухнул при постройке. Задача максимум — чтобы в нём было комфортно и безопасно жить.
Здесь уже требуется не только профессиональное образование, но и опыт. Как никто не подпустит зелёного выпускника строить дом, так никто не разрешит вам сходу проектировать целые приложения. Сначала придётся записаться в подмастерья и быть на подхвате — писать конфигурационные файлы, решать небольшие задачи, учиться проектировать и чувствовать свою постройку. Через некоторое время самому построить небольшой домишко. Если хорошо проявите себя — вам уже доверят строить многоквартирные дома.
Этому невозможно сходу научиться ни на каких курсах. Но есть и хорошие новости. Ответственность в мире программирования немного мягче, поэтому вы можете учиться строить свои дома в небольших конторах со средней зарплатой и широким кругом обязанностей. Хотя путь подмастерья в большой компании пусть и не такой весёлый, но куда более эффективный.
4. Умение построить микрорайон. Ключевое слово на этой ступеньке профессионального развития — взаимодействие. Вы не просто строите отдельные дома, вы разворачиваете целую инфраструктуру. Чтобы можно было с утра выехать из двора, вечером заехать, снабжать дома водой, газом и теплом, обеспечивать населению доступ к социальным услугам.
В мире программирования это построение экосистемы — развёртывание микросервисной архитектуры, настройка взаимодействия, интеграция с внешними и внутренними системами. Здесь нужно иметь технологический кругозор, понимать принципы и подводные камни сетевого взаимодействия и обладать определённой интуицией.
Перейти на этот уровень можно только освоив предыдущие ступеньки и только через практику и опыт. Интуиция не нарабатывается через чтение книг и просмотр видео.
5. Умение возвести, обслуживать и постоянного перестраивать город-миллионник. Это высшая ступенька мастерства, на которую взбирается не так много людей. Представьте себе большую социальную сеть. Миллионы пользователей в день, тысячи серверов, тысячи бизнес-клиентов, десятки тысяч приложений сторонних разработчиков и колоссальная ответственность.
Здесь уже громадный практический опыт и мощная профессиональная интуиция играют решающую роль.
В общем и целом, чтобы получить работу программиста с хорошим окладом, вам нужно как минимум запрыгнуть на третий уровень компетенций. Это абсолютно реально и без профессионального образования, но это никак не расслабленный просмотр обучающих видео два раза в неделю. Начинайте с основ, читайте книги, подписывайтесь на Хабр, смотрите видео с конференций, задавайте вопросы на форумах. И главное: постоянно практикуйтесь.
Практика создаёт каркас для знаний замысловатой формы, который мы называем опытом. Без этого никакой инженерный навык не представляет ценности в реальном мире.
Удачи!
Все прям по полочкам! Все так и есть
Для начала лучше осознать разницу между "клепать сайтики" и "ИИ".
Не важно какой. Главное - начни
Точно.
-Сколько времени это у вас заняло?
Пол года по 30 часов в неделю досточно освоить первый ЯП и фреймворм, например, для веб разработки. Написать свой домащний проект на нём и искать работу новичка.
-Какой язык вы порекомендуете выучить человеку без математического образования?
Python достаточно прост в изучении. При этом язык реально используется, если пойдёте по пути Data Science или Web Development. В отличии от Паскалей и прочих чисто учебных языков.
Если вы уже знаете, что какое направление вам интереснее, то и язык выбрать проще:
-Машинное обучение, большие данные: Python, R
-Передняя часть, которая в браузере: Javascript, Typescript(это улучшеный Javascript, используется в Angular), Angular или React
-Передняя часть, бизнес приложений на мобилках: ObjectiveC, J
-Задняя часть бизнес приложений сейчас вся на веб сайтах: Java, C#, GO
-Игры: C++ для UnrealEngine или C# на Unity3D
Выбрать язык можно по реальным вакансиям на сайтах по подбору. Есть вакансии для поддержки всякого старья, которое было написано лет 10 назад, но большинство вакансий для новых проектов на актуальных технологиях. Для успеха вам нужно:
-чтобы это получалось;
-чтобы было интересно этим направлением заниматься (машинное обучение, мобилки или бекенд, смотря что выбирете). Интересно как правило то, что получается;
-чтобы это имело значение, было полезно для других;
-чтобы это было востребовано на рынке и за это платили.
Посмотрите в вакансиях, какие языки и фреймворки требуются заказчику. Они там пишут в вакансиях все знания сразу на lead разработчика, даже если должность junior. На самом деле это пожелание и не обязательно всё знать из перечисленного, только честно скажите на собеседовании что знаете, а то нет. Опыт реальных проекто или домашних всё считается.
-Его лучше учить самому или в специальной школе?
Кому как. Мне лично хватило курсов на всяких Udemy, Coursera, Udacity, Pluralsight для изучения C# и написания домашних проектов. Ещё читал книжки
-Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?
Не знаком с этим вопрос. Тут всякому разное подходит для обучения, у меня как-то без школ вышло. Может со школой получилось бы быстрее стартануть в нужном направлении.
-Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?
Особенно если владеешь английским языком и знаешь, что учить. А такое знание приходит из требований заказчиков. Перед тем как выдумывать как решать задачу неплохо бы поискать, спросить на форумах, кто её уже решал до вас и есть ли готовые инструменты. Тогда будет мотивация их изучать т.к. это реально пригодиться в работе, а не просто выучено для галочки.
На мой вкус авторы курсов с Pluralsight хороши, но у меня почти не было опыта обучения на других сайтах. Сейчас присматриваюсь к WintellectNow т.к. бесплатную подписку на Pluralsight больше не дают, только WintellectNow и парочку других, где меньше курсов. Пришлось купить Pluralsight аккаунт, стоит того. Поищите в поисковике статьи по "Pluralsight бесплатный аккаунт на 3 месяца" через сайт visual studio. Метод остался, только сайты с курсами по программе другие. Ну и в торрентах многое выложено.
-Какие сайты, блоги или книги вам помогали?
Для изучения веб разработки на ASP.NET понравилась книжка
"Разработка Web-приложений в среде ASP.NET 2.0. Задача-проект-решение"
Из плюсов:
+Там по главам идёт написание реального проекта на технологии ASP.NET. Не просто перечисление всех возможностей фреймворка, а то что используется в 80% проектов.
Из минусов:
+Она частично устарела уже на момент моего прочтения, поэтому знающий человек подсказал, что главы про работу с базой данных можно пропускать и сразу делать по другому. Это уже делается по новому.
-На сегодня она устарела уже на 100%, но обратите внимание на сам подход обучения на примере решения прикладной задачи. Он, кстати, используется по многих онлайн курсах типа Udemy,...
-От себя
Есть несколько ступеней понимания тенологии: языка программирования, фреймворка, библиотеки или какого-то инструмента. После 2 ступени уже можно искать работу пионером по этой технологии.
1)Общая теоретическая, на что способна технология и знание базовых команд. Достаточно нескольких курсов c Pluralsight, Udemy, Coursera, Udacity, что вам больше нравится.
2)Практическая. Нужно использовать для написания какого-то своего мелкого проекта.
Будет откуда потом скопипастить уже проверенный код и затем улучшать его. Грубо говоря нужно уметь использовать на практике 20% возможностей технологии, которые используются в 80% задач.
3)Продвинутое знание, которое получаешь уже из долгой работы с технологией и решения всяких редких задач.
Нужно знать о наличии всех возможностей технологии, с которой вы работаете, чтобы при необходимости прочитать про них.
Если сразу взять книжку размером 1500 страниц по технологии ASP.NET, например, и всю прочитать, написать все примеры кода из неё, то можно выучиться и на продвинутый уровень сразу. Но это не очень рационально. Лучше читайте параллельно с применением на практике. Работа над своим домашним проектом или реальным заказом в компании сама подскажет на что обратить внимание из продвинутого, а что редко используется. Подскажет в какую сторону развиваться.
Python. Очень хорошо подходит для автоматизации процессов. Хочешь что-то упростить - напиши скрипт и пусть это делается само :)
Ну и это дает толчек к изучению, делаешь что-то каждый день - автоматизируй это, думаю у каждого есть такая задача. Ну и сам по себе язык довольно простой для изучения под такую задачу, потом можно уже глубже копать
Python, если дать ответ на вопрос. Но, как здесь уже написали, знать синтаксис языка - это даже не 50%. Гораздо более важно думать логично, думать прагматично, понимать алгоритмы и уметь самому их применять. Не только в программировании, кстати, - в жизни. Решать алгоритмически повседневные задачи. Уметь представлять себе проект или создаваемую сущность, из чего оно будет состоять (объекты), что и как делать (методы, функции, классы).
HTML.
Это не язык программирования.
лол, а шутку то видимо никто не понял ((((
Я начал с JavaScript, но мне кажется что для новичка это не самый понятный язык. Куда проще начать с Python
+1 питону
Каждый раз смешно с того как люди упоминают математическое образование, думая что они там формулы будут какие-то решать. Вышка по матану и смежным областям понадобится только продвинуттым людям в определенных областях (которые кодят уже несколько лет), либо как минимум смышленым интернам в топ компаниях в специалазированных отделах связанных со всякими там AI/ML, после окончания соответствующих топ вузов и прохождения всяких там стажировок. Проще говоря - не углубляясь сознательно в околоматематические вещи, вы с 99.99% вероятностью никогда с ними не сможете встретится в первые годы программирования, если конечно не начнете рассылать резюме наугад.
Математика — это как спортивная гимнастика для мозга. Практических навыков получаете мало, но наука вам даёт эластичность мышления. Просто мозг начинает работать по-другому.
Это нельзя количественно измерить, но разница есть. Это интуитивно понимают работодатели, поэтому выпускников кафедр с сильной математикой и физикой (та же математика вид сбоку) расхватывают на ура.
С любого где не требуется компиляция... С интерпретаторами работать куда проще. Я б сейчас советовал начинать с Java, JS, Python, PHP.
Java не компилируется?
Ну для C++ тоже есть REPL https://github.com/vgvassilev/cling
Новичку - JS, но сразу в ES6. Не требует строгости, сразу виден результат - не нужны сложные среды, Си-подобный - можно легко переучиться на другие, углубляемый - можно копнуть или в ноду, или в фуллстек фреймворки, полезный - можно найти много работы тупо по фронтенду, развитый - самое большое сообщество и куча готового кода. Минусы: ужасная архитектура, и даже сама нода, которая должна была стать развитием идеи, является ещё большим её ухудшением. Т.е. свои проекты только небольшого размера можно поднять.
Главный принцип: выучить простой и популярный язык, типа JS, и с него перейти на что-то более нужное. Потому что в прогинге главное не язык, а само программистское мышление, умение строить и маленькие циклы и большие архитектуры. А язык сегодня изучается быстро, почти все они срисованы с Си
вы бы лучше написали-это я для комментаторов, какая мотивация была учить? Почему начали учить язык? Это объяснит больше, чем какой язык и что нужно знать. Знать нужно столько, сколько нужно, чтобы решить проблему)
Странно, прочитал коменты, и даже не заметил зачатков холивара C# vs Java. :)
Странно, что никто не упомянул Swift.
Многие советуют начать новичку с некомпилируемых языков. Например, Javascript. Не говоря уже о том, что JS полон всяких штук, которые новичка только запутают, а избежать их нельзя (типа callback-ов), так интепретируемые языки обладают, как правило, двумя неприятными для новичка чертами: 1) нестрогая типизация и 2) нет ошибок компиляции (потому как интерпретатор же).
По-моему, лучше новичку один раз разобраться с типами данных, чем постоянно напарываться в программах на ран-тайм исключения или еще того хуже - на «странное» поведение программы.
Что касается ошибок, обнаруживаемых на стадии компиляции, то это благо невозможно переоценить, потому что скорость изучения языка в значительной степени зависит от скорости обратной связи от верификатора, который на каждый чих говорит «правильно-неправильно». Еще лучше, когда такому верификатору помогает хорошая IDE, которая умеет обнаруживать синтаксические, семантические и прочие ошибки «налету», то есть прямо во время написания кода, а не во время компиляции.
Представьте себе, что вам нужно выучить английский язык. И вот вам в голову внедряют чип, на который записан Grammarly. И все, что вы говорите или думаете по-английски, мгновенно получает качественную обратную связь от Grammarly. Насколько быстро вы бы выучили язык?
Погружение в языковую среду тоже хорошо работает, потому что верификаторами являются окружающие вас люди, дающие мгновенную обратную связь. Наверное, лучший способ выучить английский - жениться на американке, уехать в Америку и ни в коем случае не общаться с русскими. Шутка))
Еще раз. Интерпретаторы откладывают сообщения об ошибках на неопределенный срок и это может сильно осложнить жизнь новичку. Для интерпретаторов, как правило, не существует хороших IDE (я не имею в виду редакторы).
Многие советуют Python. Это простой язык, но я бы не стал с него начинать. Во-первых, он интерпретируемый. Во-вторых, он не С-подобный и обладает странным синтаксисом.
На мой взгляд, нужно учить именно С-подобный язык, потому что тогда новичку открывается целый мир языков, имеющих наибольшее значение на сегодняшний день - С/С++, С#, Java, Javascript, Swift, Objective-C, Kotlin в конце концов!
Исходя из вышесказанного, я считаю, что наиболее подходящими языками для новичка являются Swift и С#. Оба С-подобные, оба густо посыпаны синтаксическим сахаром (в отличие от очень сильно перченого С++), для обоих существуют прекрасные IDE (Xcode для Swift и Visual Studio для С#). C# выигрывает из-за кроссплатформенности (Windows, Android/iOs, Linux). Но Swift обладает, на мой взгляд, идеальным синтаксисом. Он прямо глянцевый, по-другому назвать не могу. А Xcode - почти идеальная IDE (имхо). Поэтому я бы выбрал Swift.
Какую-то хуйню вам советуют все
Учи ассамблер!
Первым и пока единственным выучил GML (язык в Game Maker Studio), но у меня была конкретная цель - делать игры. Ну как выучил, уже 10 лет учу и думаю еще столько же понадобится. До этого с отцом баловался бейсиком на ZX Spectrum. По математике было три/четыре. Учил по форумам и справкой, на пару с меджик гуди.
Считаю, что надо определится с целью и инструментом, а потом выбирать язык.
1. Первым учил Pascal в школе:) Затем его же в институте. Сложно сказать, сколько я его изучал, но на практике применял несколько лет - решал задачи на олимпиадах и лабораторные для однокурсников. Неплохо в свое время зарабатывал на "мертвом" и коммерчески неуспешном языке. Параллельно изучал PHP и первый сайт сделал на нем. Потом Python. На основы Питона ушло два дня. Но это потому, что уже знал два языка. Еще через пару месяцев делал на Питоне (+Django) сайты.
2. Python вполне норм. По крайне мере у него низкий порог вхождения и его можно использовать в реальных проектах. Плюс нужно хоть какое-то представление об алгоритмах.
3. Тут вам нужно самому выбрать удобный и эффективный для вас способ обучения. Кому-то хватает книг, другим видео-курсы, третьим нужен учитель. Всё индивидуально. Но главное в обучении - это не курс, книга или преподаватель, а мотивация ученика. Будет мотивация - будет прогресс. Ну и практика конечно. Без неё в программировании никуда. Правило 10 тыс никто не отменял.
4. С помощью онлайн-курсов учить эффективно.
5. Питон учил по книге Марка Лутца - "Изучаем Python". За всем остальным шел на StackOverflow.
И конечно рекомендую свой курс по Питону: https://shultais.education/courses/python-3
Открою секрет:
Вы не первый кто подумал "выучить самый простой язык программирования"
Из этого следует, что чем проще язык - тем больше конкуренция. А по поводу автоматизации востребованы будут программисты m2m, те кто разбираются в нейросетях и ещё пара отраслей. Не просто так Греф сказал "век программистов окончен, настала эра энергичных людей"
Шарп самый красивый и логичный, особенно для новичков. Синтаксис красивый + студия сам помогает, что крайне немаловажно для новичка.
Ну либо питон, но с ним все не так красиво и интуитивно, как на C#, зато можно быстро и на коленке клепать то, что хочешь.
вы бы дописывали ИМХО
То есть людей просят забесплатно увеличить конкуренцию в той области, которой они занимаются, и они согласны? Что происходит?
Профессионал осваивает не знакомый ему язык за 1-2 недели. Через месяц-два начинает разбираться в тонкостях, о какой конкуренции может идти речь? В программирование надо понимать что и зачем ты делаешь, а на каком языке это уже дело вторичное.
Go.
Гораздо менее вычурный, чем python.
Сообщество отзывчивое, много книг и статей.
А вообще лучше с CS50 начать.
Комментарий удалён модератором
Давать советы с чего легче начать - не буду. Лучше расскажу о своем пути. Начал в школе с паскаля, потом достаточно быстро перешел на изучение С, потом WinAPI, далее С++. В какой-то момент друг рассказал про PHP и веб-сайты, чем я и занялся. Лет через 5 появился Node.js. Последние года 4 пишу на ноде. Но как тут уже писали выше - язык не главное. Главное понимать принципы, фундаментальные структуры данных (работать со стеком или очередью можно как в JavaScript так и в С++), алгоритмы, ну и прочие прелести софтверной жизни.
1. Заодно расскажите, какой язык программирования вы начали учить первым?
Начал сразу с Java(сейчас понимаю, что это был не самый лучший вариант для старта, для новичков достаточно тяжело с ходу его освоить). Позже к этому добавился JS, PHP.
2. Сколько времени это у вас заняло?
До сих пор учусь)) На основы ушло около года, учить начал три года назад. Но это Java....
3. Какой язык вы порекомендуете выучить человеку без математического образования?
Вот вообще не считаю отсутствие мат. образования проблемой при изучении языков! Это стереотипы. Попробовать начать наверно стоит с JS, он не так сложен в плане синтаксиса и интуитивно очень понятен.
4. Его лучше учить самому или в специальной школе?
Зависит от усидчивости. Если умеешь учиться, то и школы не нужны. Очень много материала в интернете.
5. Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?
--
6. Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?
см. п.4
7. Какие сайты, блоги или книги вам помогали?
--
PHP или JS, и веб в целом, английский язык тоже не забыть, а через год-два опыта уже можно начинать "валить" :) Учится быстрее наверное начав какой-то свой небольшой сайт/сервис/итп, так как нужна практика. Чистый PHP требуется имхо редко, обычно какой-то фреймворк (symfony, laravel, иногда yii), так что можно сразу с них и начинать (symfony популярнее в Европе в компаниях например, laravel чуть менее, но с симфони начинать слишком сложно, ларавел проще, yii еще проще наверное).
Не знаю текущую программу универов по обучении прогеров, но...
1. без мотивации, фанатичного желания и терпения - хрен что получиться.
2. программистом делает не язык а его сфера деятельность, знание необходимого материала(математика, алгоритмы, архитектуры...). это важно, без этого пустая/большая трата времени(чтобы не говорили выше). Это касается любой области деятельности хоть системное программирование хоть прикладное. Ps: аля jquery программистов это не касается.)))
3. нужно готовым что учение не закончится после окончании школ, универов... это постоянное обучение.
4. мое мнение универ с его программой отлично подходит, его задача не научить синтаксису языка, а дать необходимый багаж знаний - разного рода математик, разного рода материала необходимого для программирования.
5. сферу деятельности и язык/и выберите позже после начало осознания нужно ли оно вам.
Единственное точно могу сказать ни курсы ни конфы, митапы не сделают из человека прогера.
я начал с pascal, потом жестко подсел на assembler(реверс инженеринг, вирмейкерством, крипто анализ) но тут все сложно но интересно. Потом был C/C++, python, qt, gtk и это показалось скучным(платят конечно не плохо). Сейчас это Go, Nodejs, php.
Удачи!
ассемблер?
вот хороший разбор по критериям -
http://www.infocratia.top/themes/16/0/
only javascript only hardcore
hardcore?
Попробуй java 9. В ней появился REPL, так что новичку даже не придётся создавать класс и public static void main. И среду разработки intellij idea
Python
Brainfuck
abap
Не человек выбирает профессию, а профессия человека. Раз можешь жить, не программируя, - значит ты не программист и никогда им не будешь.
Desktop: машинные коды Z80, Бейсик (Z80), Лисп, Паскаль, C (x86), C++ (x86), C#, Python (Blender);
Embedded: assembler (AVR, PIC, Holtek), C (AVR, PIC, Holtek);
Backend: PHP, Node.JS, Lua (NGINX);
Fronted: JS, AS3 (Flash);
Mobile: Java (Android);
3D: GLSL (шейдеры)
было бы неплохо придумать распределяющую шляпу :D
Java Script. Учусь на codecademy, уже 2 месяца, полет нормальный, заходит хорошо. До этого опыта не было. Планирую освоить семейство JS, на этом же сайте.
Ruby,
Python,
C#
>Сколько времени это у вас заняло?Постоянно учишься и узнаешь новое сам. Попробуй реализовать какой-либо проект и в процессе решения задач научишься.
>Какой язык вы порекомендуете выучить человеку без математического образования?Распространенное заблуждение что нужно быть математиком чтобы программировать, это не так.
Программист как правило знает много языков и выбирает нужный для задачи.
Для сети много-много инструментов. Лучше начать с php7 и javascript - самые популярные синтаксисы (на их основе освоишь дофига всего).
>Его лучше учить самому или в специальной школе?Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?Лучше самому. Прочитать документацию. В google же не забанили.
>Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?По разному. По мне так они все для определенной категории людей. Те кто учится сам - потом могут без посредников доучится, переучится, освоить смежные области.
Ruby
Python
C#
Заодно расскажите, какой язык программирования вы начали учить первым?Ассемблер и бейсик, паскаль потрогал только после появления чудо машины на i286.
Сколько времени это у вас заняло?Месяца 4, может 5. Z80 ассемблер очень простой.
Какой язык вы порекомендуете выучить человеку без математического образования?JavaScript или PHP. Для всего остального нужно хотя бы немного уметь статистику и тервер.
Его лучше учить самому или в специальной школе? Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?Лучше пойти учиться либо во ВШЭ, либо на Физтех. Там преподают ребята из индустрии с хорошим бэкграундом в CS. В школах преподают люди без навыков разработки крупных проектов уровня Google Spanner.
Если хорошо заботаешь математику, то стоит пойти в Школу Анализа Данных.
Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?Эффективно, если есть бэкграунд. Без бэкграунда в CS будете веб морды для сайтов клепать.
Какие сайты, блоги или книги вам помогали?Cracking the coding interview ;)
Ждал холиваров в коментах, но не нашёл.
Поэтому дам совет:
1) Joomla for dummies
2) в продакшен
(Шутка)
Вместо "Какой язык программирования легче всего выучить с нуля?" нужно спросить "Какой язык стоит учить с нуля?".
На второй вопрос ответ: "Scheme по SICP". А не то, что ПТУшники тут в комментах пишут.
Не обладает полнотой по тьюрингу (
Вообще учить язык это одно, стать программистом совсем другое. Есть у меня знакомый который вроде как прогает, но в плане придумать велосипед для решения той или иной задачи, совсем нулевой. Я понимаю что все это приходит с годами и упорством(читать фанатизмом) в своей сфере, но все же, у кого-то лежит к этому голова, у кого-то совсем нет(как и с любым другим делом).
ИМХО самый простой на сегодня путь это JS(ES), хотите фронт-энд, хотите бэк-энд, не удивлюсь если на нем уже можно и что-то "полноразмерное" в плане ПО (хотя я свято верю, что скоро все уйдет в веб) написать. Информации по нему вагон, документации хорошие, плагинов тьма, востребованность огромная.
Больше 20 лет из 35, было потрачено на программирование.
Начало было лет в 11, ассемблере z80 - мультиколор, все дела - около 5 лет. По моим ощущениям стал кул-хацкером. Мог любую программу распотрашить через декомпилятор) и более того понимал что надо делать и куда смотреть, чтобы получить нужный результат.
Потом появился у меня 386 - здесь я освоил ассемблер, почти все тоже самое, стеки, переходы, регистры, преррывания, защищенный режим... в общем переход от z80 к 86 был на ура. Opengl на асме можно делать, проверенно.. потом с++ все с теми же вставками из асма тоже было освоенно. Потом началась работа - заказчики гос.сектор, банки - здесь было очень много java, даже в базе данных и та жава)) итого около 10 лет, здесь также декомпиляция и т.д. Помимо этого был освоен пы-ха-пэ в нем трейты, нэймспейсы)) в нагрузку к нему html, css, и немного javascript. Потом оказалось javascript это не jquery), и тут появился nodejs. В общем теперь я на ноде... очень люблю reactjs+redux, могу собрать их так чтобы был сервер-сайд-рендеринг, i18n, l10n... в общем, переход на жаваскрипт был странным - асинхронный он наш весь такой, порог вхождения, как мне кажется здесь самый большой, конечно же если это не задачи уровня жуКвари).
В целом программирование везде одинаковое. Но потом начинается http, https, tcp, udp... много страшных слов не попало в этот рассказ...
С одной стороны из-под каждого куста кричат, учи язык такой и оставайся мальчик с нами будешь нашим королем) по факту если тебе 2х-30-и больше смысла нет этим заниматься (учить программирование), грубо говоря это как биткоин - вот он 7к$, а был 0.004цента) но поезд уже ту-ту)).. Чисто как хобби - тогда можно.
С поиском, работы тоже не все однозначно, тупо берем первые попавшиеся вакансии, и смотрим стек технологий - и к ним обязательное утверждение "идеальное знание того, сего.." - у меня вопрос, скорее к тому кто это формулирует, это как, с%&%))
Я не являюсь участником машинного зренеия/обучения, ИИ. У меня клиент-сервер... и прослоки между этим.. сюда и LDAP, и bash, и т.д.
Резюме: я выбираю javascript. Не могу точно сформулировать почему, но исходя из опыта и перспективы, интуиция располагает к этому.
П.с. на телефоне неудобно)
Путь здорового программиста:
1. выучил английский
2. С (Керниган & Ричи, можно в переводе)
3. youtube -> поиск Jerry Cain (Stanford)
дальше - все пох, кроме FPGA
Насколько я помню главное были не конкретные языки, изучали структурное программирование (паскаль,си-на выбор), функциональное -пролог,лисп(привет ИИ), затем объектно-ориентированное (Си++ и немного Javа), какие-то сайтики клепали, параллельно структуры данных, алгоритмы и куча математики. Ах да- компилятор своего микро ЯП накатали. Заняло это все лет 5-6 . Могу посоветовать только все вышеперечисленное =), но все-таки главное понять основные парадигмы программирования, а на чем вы их будете изучать - по большому счету неважно=)
Попробовал понять, много гуглил вчера. С точки зрения новичка (это я, например), который не определил в 15-20 лет программирование, как свою жизнь и основную профессию, а так, просто немного разобраться или решить определённые околопрограммерские бизнес-задачи, то набор такой:
JS - проще и полезно для новичка с определенными бизнес-задачами, потому что это веб (с моей точки зрения для широкого набора бизнес-задач сегодня веб не будет лишним).
А эти два берём как основу (другие языки тоже придётся затронуть, мягко говоря), если решил становиться программистом:
C++ это хардкор, но на нём можно всё.
Java - потому что Андроид.
И тут зависит от того, в какую область нужно будет уходить/ что больше нравится - там и качать скиллы до бесконечности.
Помогите понять, почему Питона нет в моем списке? Про php сам сам разобрался, вроде. Он просто вне области моих абстрактных задач : )
Всем привет
Я хочу стать программистом с чего начать?
Имхо, начинать лучше с Java.
Сам язык хорош, выравнивает руки и "заставляет" писать в ООП стиле.
Первая работа на Java - более вероятно, что будет более профессиональная команда, а не вебстудия в подвале. В Java не нужно учить по фреймворку в сезон :)
Я в итоге, после 3-х лет Java переехал на JavaScript. JavaScript просто охуенен на мой взгляд, но к нему нужно подходить уже с опытом, иначе выйдет жопа.
Но как уже было неоднократно сказано выше, язык это лишь средство. Я бы не ставил себе цель "Изучить Java за 30 дней". На мой взгляд это не эффективно, лучше ставить цель "Сделать приложение для групповых велопрогулок" - это интереснее, но самое главное, в итоге, вы будете уверены, что умеете сделать продукт, а не написать код, а это уже другой уровень понимания.
Язык в юном возрасте любой осваивается за ночь. Гораздо сложнее - библиотеки, фреймворки, сервера приложений. Но и это все фигня. Еще сложнее научиться писать хороший код, который могут использовать другие участники команды разработки. Но и это фигня. Не фигня научиться проектировать большие системы. Впрочем и это тоже фигня. Совсем не фигня - это математика. Высший пилотаж уметь моделировать, правильно и доказательно использовать те или иные модели. Ну и в принципе понимать что делаешь и зачем это нужно. Совсем высший пилотаж - уметь применять все это в прикладных областях, т.е. знать еще что-то кроме математики и программирования.
Единственный язык, в котором я могу написать что-то более-менее полезное: Машинный код (86). Первое время даже дома применял.
Однако я не нашёл рабочий мест в своей жизни, где он вообще кому-то нужен был. А другие в универе ну учил, ну может вспомню.
Вы пишете в машинных кодах? круто! ))
Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что-то не отпускало меня - я пошёл на python.org и стал изучать стандартную библиотеку, старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про PEP8. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту конвенцию по написанию питоньего кода. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.
Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.