Как начать программировать, какой язык выучить?Знаю, таких статей много, но я попробовал сделать что-то особенное. Скажу сразу, информация ниже будет для халявщиков. Я всегда рекомендовал и рекомендую купить курсы и учиться там. На курсах есть чёткая программа обучения, которая построена годами, и код ревью. А это очень важно для новичков. Тем не менее тут я посоветую много интересных книг, видео-курсов, дам советы в обучении, так что это, я надеюсь, будет полезно всем.
Когда меня спрашивают характерный вопрос я всегда задаю встречный вопрос «В какой области хотите программировать?», на что всегда получаю характерный ответ «Понятия не имею».
Всего областей программирования много, но я выделю основные из них:
- Frontend разработка вебсайтов — HTML/CSS, JavaScript
- Программирование серверов — Python, Java, PHP (только для backend сайтов)
- Создание десктопных приложений — C++
Многие на этом моменте говорят что ещё не определились с областью, поэтому я составил объемную программу, которая поможет вам определиться и выучить языки программирование, но если вы знаете область в которой хотите писать — учите тот язык, который стоит после тире.
Итак, если вы ещё не знаете что хотите писать, вот небольшая программа обучение. Если пройдёте её — определитесь с областью разработки и познаете несколько языков программирования.
HTML/CSS
Это основа, она используется не только на вебсайтах. Знание как писать XML документы очень полезно, это используется везде. Вы не раз встретитесь с ними в других языках. Например настройка приложения.
Для изучения могу порекомендовать сайт HTMLAcademy.ru.
Так как я сказал что всё обученик будет бесплатно, проходим только три бесплатных курса на этом сайте — «Знакомство с HTML и CSS», затем «Основы HTML» и в конце «Основы CSS». После прохождение этих курсов вы выучите основы HTML и CSS, а это уже круто!
JavaScript
Теперь я рекомендую попробовать себя во Frontend.
Фронтенд — все, что браузер может читать, выводить на экран и / или запускать. То есть это HTML, CSS и JavaScript (взято с сайта tproger.ru). Другими словами, это то — что видет пользователь. Если вы откроете панель разработчика на этом сайте (пкм -> Просмотреть код элемента) и перейдёте во вкладку Sources вы сможете найти .js файлы. Да, эти файлы тяжело читать (это сделано что бы страничка быстрее грузилась), однако когда вы будете программировать вам будет намного проще. Уже в первые дни вы сможете читать код как любую русскую книгу. Так вот, весь js код который вы здесь увидели написан для вашего удобства и для контактирования с сервером (Backend).
Изучать JavaScript рекомендую на англоязычном сайте JavaScript.info, именно его сейчас активно дополняют. Однако есть и русский учебник Learn.JavaScript.Ru.
Что конкретно стоит учить? Основы языка, DOM елементы и AJAX. Другими словами первые две части русского учебника плюс первые две главы третьей части. Обязательно выучите что такое fetch. AJAX очень важно учить именно в этом учебнике, так-как в остальных показывают как отправлять/принимать запрос через фреймворк JQuery. Этот фреймворк сейчас мало кто используют, так как в самом JavaScript есть более удобные функции (fetch например), но все о них почему-то молчат. Все главы про ES ниже шестого и IE ниже восьмого можете пропускать (ES6-, IE8-).
Редактор
Редакторов для JavaScript и вообще для веб разработки много, но новичкам рекомендую Visual Studio Code с плагином Live Server. Он позволяет вам запустить свой сервер для проверки вашего кода. Также можете использовать плагин Beautify, он сделает редактор более красивым.
Многие профессионалы используют JetBrains WebStorm, но я думаю что вам пока рано…
Книги
После того, как вы прочитаете все главы этого учебника могу посоветовать книгу You Dont Know JavaScript.
PHP
Теперь, когда вы познали frontend разработку стоит попробовать backend. PHP очень просто язык. Лично я уже на 3 день написал простенький, но интересный сайт. Этот язык вам может понравиться именно тем, что он лёгкий.
Тут я рекомендую посмотреть плейлист Гоши Дударя "Учим PHP, а также MySQL". Тут автор так-же затрагивает тему MySQL. MySQL — это база данных. Знание как работать с ней очень полезно, так что ни в коем случае не пропускайте эту тему!
Редактор
В качестве редактора можете используйте тоже Visual Studio Code, но тут Live Server уже работать не будет. Вам потребуется Apache. Я советую использовать программу XAMPP. Она простая и удобная.
Также попробуйте редактор JetBrains PHPStorm
Python
Теперь попробуйте себя в программировании серверов. На Python вы тоже сможете делать сайты, но возможностей тут намного больше. Его я рекомендую учить потому-что это сейчас популярный язык, у него много библиотек и вообще много кто на нём программирует. Учиться питону вам будет просто, на него сделано много туториалов и вообще статей на различные темы.
Для изучения я так-же рекомендую курс Гоши Дударя "Python программирование / Уроки для начинающих". Я сам учился питону именно по этому курсу, хоть сейчас пишу на нём мало (чисто из-за вкусов).
Редактор
Можете попробовать стандартный редактор Python (когда я начинал я писал именно там), но я рекомендую использовать JetBrains PyCharm.
Книги
Могу посоветовать только "Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих". Другие не читал.
Java
Его предназначенность такая-же как и Python, а вот стили синтаксиса — разные. Скажу сразу, это сложный язык, но если у вас что-то не будет получаться или вы не будете понимать, знайте — это нормально. Скорее всего эти знания вы ещё догоните.
Хоть я и говорил что программа полностью бесплатна, я не могу не посоветовать курс JavaRush. Его идея в том, что только что полученные знания закрепляются практикой и помогают запомнить тему. Знайте, программисты ничего не зубрят, всё запоминается практикой.
И все же если вы категорически против отдавать свои кровные можете так-же попробовать курс Гоши Дударя (что-то его слишком много у нас в программе) "Java программирование / Уроки Java для начинающих".
Редактор
Однозначно JetBrains IntelliJ IDEA. Это ЛУЧШИЙ редактор кода который сейчас существует, я рекомендую только его!
Книги
Очень интересная книга "Изучаем Java". Рекомендую к прочтению.
C++
Если интересно делать десктопные приложения (как этот браузер например) или игры вам стоит учить именно этот язык.
Рекомендую курс Гоши Дударя "С++ программирование / Уроки C++", ну а потом по желанию. Если хотите писать игры рекомендую выучить движок Unreal Engine или Unity.
Редактор кода
Тут несомненно Visual Studio (не Code!). Он так-же удобен, как и IntelliJ IDEA для Java.
Ещё немного о книгах
Ещё есть две очень интересные книги. Они не касаются определённого языка программирования, а говорят о программировании в целом. Очень интересны и полезны.
Ресурсы, с которых взята информация:
www.google.com — да да, именно гугл. Программистам очень важно пользоваться поисковиками. Большинство ваших проблем уже решено в интернете и вам никто не запрещает подсмотреть ответ. Убедительная просьба — читайте код перед тем, что бы копи-пастить. Подумайте, почему это решение работает.
ru.stackoverflow.com — форумы для программистов тоже полезны. Если не можете найти ответ в гугле — обращайтесь сюда. Можете также использовать английскую версию.
tproger.ru/translations/frontend-backend-interaction
Комментарии (97)
redf1sh
09.06.2019 12:14+4А где же Verilog/ASM/Чистый C? Вдруг ваш новичок захочет программировать микроконтроллеры или процессор свой сделать?
Mirn
09.06.2019 14:56+1а например верилог в странах СНГ вообще нужен?
я вот тут поглядел сколько нужно верилога с первым элементом в списке автора:
Jouretz
09.06.2019 15:42HTML hr-ы лупят в каждую вторую вакансию, от сисадмина-эникейщика до java-тимлида, а в вакансии со словом Verilog скорее всего реально нужен человек знающий эту штуку, так что не особо репрезентативно.
Mirn
09.06.2019 16:26Про HTML согласен что на любой веб он требуется для галочки.
Но что же тогда две трети из верилог вакансий это просто «висяки» — те же самые вакансии, тех же самых работодателей что и были когда я в 2015-16ых искал работу даже без изменения текста в некоторых (которые я сохранял на хард, специально проверил). При этом с хоть какой то зп только 10 и из половины из них я получал офферы — они оказались и ниже опубликованной вилки и далеко не «белые» что маловато для Москвы. При этом собеседования всегда проходили в ключе «кандидата валить и сэкономить на нём любой ценой, у нас денег нет вообще», а остальные это просто гос. НИИ с окладом в 20-40тр.
Вот про что я и говорю в сфере электронники и промышленности чаще нужно сэкономить, а собственно сам верилог это побочное — «а вдруг найдём за такую зп» наверное.
redf1sh
09.06.2019 18:17У меня в МЦСТ нужен. Пока прохожу обучение, но со следующего семестра распределение. И в логическом проектировании, и в физическом он нужен. Ещё в Huawei говорили что нужен Verilog (как я понял, всякие АЦП/ЦАП и системы обработки сигналов проектировать). Я так понимаю, что такие вакансии узнаются на встречах/конференциях/по-знакомству.
opckSheff
09.06.2019 12:15Самой большой загадкой для меня останется то, почему вы неоднократно правильно пишете frontend, но при этом неоднократно косячите с backand. Ну да ладно.
А вот советовать новичкам учить для десктопов C++ в 2019 году это, конечно, издевательство. Хотя тема холиварная.DrPass
09.06.2019 13:25+1почему вы неоднократно правильно пишете frontend, но при этом неоднократно косячите с backand
Да это типовой кейс ленивой печати: чтобы избежать частого переключения раскладок перед и после часто встречающегося слова на латинице, его один раз набирают и потом копипастят. Если набирают с ошибкой, получается вот так.extempl
09.06.2019 17:40Ничего себе ленивая. это нужно специально рядом словарик открыть со словами для копипаста или искать где оно там было выше. Даше написать только двумя пальцами проще (чего не скажешь о разработке — там-то конечно проще скопипастить название переменной, но делается это спец хоткеями).
censor2005
10.06.2019 09:42А вот советовать новичкам учить для десктопов C++ в 2019 году это, конечно, издевательство
А что бы Вы предложили для десктопа в 2019? Не сарказм, мне действительно интересно, я как то далеко ушел от десктопа за последнее времяDrPass
10.06.2019 12:47C# и, как бы это для кого-то не звучало странно, Delphi. Второе по-прежнему является наиболее мощным инструментом для разработки десктопных приложений.
DjSens
11.06.2019 06:50может Lazarus? за Дельфи платить надо большие деньги
DrPass
11.06.2019 12:10Они наконец сделали то, что надо было делать лет 15 назад — Community-версию Delphi, которая бесплатна, если ваш доход от разработки не превышает 5К в год. Т.е. для прототипирования уже можно брать и пользоваться, а потом в случае успешного выхода на рынок просто купить. Как по мне, это вполне адекватная схема, без рисковых инвестиций в софт, пока продукт не продаётся, и вполне адекватные вложения в инструментарий, если продукт уже продаётся.
adictive_max
11.06.2019 12:37Ну, как бы…
VS Community — «Корпоративными считаются организации с более чем 250 ПК или годовым доходом свыше 1 млн долларов США.».
Unity и Unreal (как и многие игровые движки и сопутствующие инструменты) бесплатны сами по себе и оплачиваются с объёма продаж.
IntelliJ IDEA (CE), QTCreator, AndroidStudio, XCode — бесплатны полностью без всяких оговорок.
Кастрированная версия для ультра-нищебродов — так что так себе подвиг в 2019 году…DrPass
11.06.2019 12:48Так себе подвиг, но если бы был другой подобный инструмент для нативной разработки, они бы либо изменили лицензионную политику, либо исчезли бы с рынка. Дык нет же…
adictive_max
11.06.2019 07:16и, как бы это для кого-то не звучало странно, Delphi
Если бы не конские ценники…censor2005
11.06.2019 11:09Так вроде они недавно Community версию выпустили, разве нет?
adictive_max
11.06.2019 11:22Выпустили. Для НКО, фрилансеров и патентованных нищебродов (доход менее 5 килобаксов в месяц).
dopusteam
09.06.2019 12:18+2«Java
Его предназначенность такая-же как и Python»
:D
«Просмотреть код элемента) и перейдёте во вкладку Sources вы сможете найти .js файлы. Да, эти файлы тяжело читать (это сделано что бы страничка быстрее грузилась), однако когда вы будете программировать вам будет намного проще»
Особенно интересно, если они минифицированы
akryukov
09.06.2019 12:21+9Хотелось бы затронуть тему по которой мне пишут 2-3 раза в неделю
Расскажите о себе. Почему вам лично пишут 2-3 раза в неделю этот вопрос?
yea
09.06.2019 12:39+2я составил объемную программу
Объемная программа — это матанализ, линал, дискретка, теория вероятностей, матлогика, алгоритмы и структуры данных и еще куча всякой байды. Кстати, я думаю, что примерно так и нужно делать. А у вас — «учим с++ за 21 секунду».polearnik
09.06.2019 13:12ага ведь матанализ дискретка и теория вероятностей очень полезны во фронтенде. Да и в бэкэнде тоже пригодятся.
yea
09.06.2019 13:21-1Черт с ним с матанализом, но каким программистом можно быть без хотя бы основ дискретки и теорвера — я не понимаю.
Moxa
09.06.2019 14:18хорошим! во фронтенде сложная математика практически не нужна, да и на бекенде для rest-api тоже негде применить
Jouretz
09.06.2019 14:51Существует более чем 1 область программирования (web)И даже в вебе существует более чем один вид задач.extempl
09.06.2019 17:43Это узкая специализация. Не нужно уметь паять под микроскопом чтоб ставить розетки и скреплять провода специальными разъёмами (а я встречал людей, которые и это делают офигенно (не умея паять по микроскопом, да)). Да даже чтоб умный дом собрать — тоже вряд ли пригодится (разве что все устройства собирать самому, но в таком случае, человек собирающий и проектирующий устройства как раз занимается сугубо их разработкой, а не собирает из них схему). В общем — мне непонятно почему все выучившие (и помнящие прямо сейчас) дискретку или теорвер так рьяно топят за то, что оно надо всем подряд в ежедневной работе. Нет.
Jouretz
09.06.2019 19:38-1Имхо, это то что отличает специалиста от ремесленника. Да кнопки нажимать в правильном порядке и обезьяна научиться может, а вот понимать какие процессы происходят в результате этих нажатий уже сложнее.
Понятно, что в реальной практике программисту особо не пригодятся знания в каком-нибудь функане, но математика в принципе приучает структурировать мысли и помогает мозгу научиться работать со сложными структурами и абстракциями.extempl
09.06.2019 21:31математика в принципе приучает структурировать мысли и помогает мозгу научиться работать со сложными структурами и абстракциями
Вы так говорите, как будто верно и обратное. И человек не особо помнящий матан, который зубрил в институте только чтоб сдать обязательно будет ремесленником-неудачником (ну, потому что вместо мозгов у него неструктурированная каша). Программистом, и хорошим программистом и даже отличным программистом можно стать без математического бэкграунда. Может такой бэкграунд поможет, может даже пригодится в некоторых задачах, но однозначно это не единственный путь к становлению программистом.
iig
10.06.2019 11:29Было бы интересно посмотреть на хорошего программиста (лучше на 10. А то можно и Ломоносова вспомнить), который принципиально совсем не учил высшую математику.
adictive_max
10.06.2019 12:11А вот давайте не передёргивать. «Принципиально совсем не учил» и «забыл большую часть за ненадобностью» — это две огромные разницы.
iig
10.06.2019 12:23Нет уж. Если высшая математика программисту не нужна, он ей не пользуется — значит, кругом были бы толпы хороших программистов, математику никогда не учивших.
adictive_max
10.06.2019 12:49Знаете, это примерно из той-же оперы, что в 17 веке почти все выдающиеся физики, химики, математики имели богословское образование, и это всенепременно потому, что «через веру развивалась наука», а не потому, что все университеты выросли из семинарий, и изучать физику без обязательной нагрузку в виде богословия было тупо негде.
Вот и у вас ровно то же самое. Учитывая, как составляются учебные программы, «никогда не учить математику» = «не получать никакого профильного образования».
Кроме того, никто никогда не утверждал, что она не нужна вообще. Она не нужна в том объёме в настолько заученном наизусть виде, в котором её требуют.iig
10.06.2019 13:31Она не нужна в том объёме в настолько заученном наизусть виде, в котором её требуют.
Ни один предмет в школе-вузе не нужен в том объёме в настолько заученном наизусть виде, в котором его требуют.
Да, наверное, возможен сценарий, когда математику (к примеру) будут учить ровно в том обьеме, который нужен для работы младшим программистом в подотделе обработки событий мыши. Только проблема будет в том, что нигде больше (совсем нигде) его умения не будут нужны. Даже в соседний отдел, где играются со шрифтами и черным цветом. ( я случайно пересказал классику ;)adictive_max
10.06.2019 15:01+1Требуют не в смысле «в учебном заведении во время учёбы», а в смысле того, как высокие профессионалы вроде вас отделяют плебеев-ремесленников от элиты.
ИМХО, вы очень переоцениваете сложность подавляющего большинства задач, которые встают перед большинством программистов. Как будто есть высшее знание великой математики, которое нисходит свыше как откровение в университетах, и больше никогда не восполняется, а любая работа, сложнее «обработки событий мыши» требует знать теоретические основы теории категорий, геометрии Лобачевского и теоретической физики с произвольным количеством пространственных измерений.
Да как бы нет, в абсолютном большинстве случаев, если возникает необходимость в чём-то реально сложном, нужные знания восполняются за 1-2 недели с минимальной посторонней помощью или даже вообще без. Это всё не нужно хранить в памяти постоянно, от того, что там лежит общая схема проекта и обзор возможностей используемых библиотек, пользы как правило в разы больше.Jouretz
10.06.2019 15:15О каком проекте вы говорите в итоге-то?
Разработка сайта за 300 баксов, AAA игры, браузера, статического анализатора, операционной системы, языка программирования и автоматики управляющей полётом на Марс требуют абсолютно разных квалификаций. И правило «восполняются за 1-2 недели» сработает далеко не везде.adictive_max
10.06.2019 15:37Из того, что вы сейчас перечислили, высшая математика:
— не везде нужна в принципе
— если и нужна, то далеко не на всех позициях
— там где нужна, это далеко не одна и та же математика.
НО, настоящий программист™ должен знать всю вышку, «от и до», значит это вот всё — области где не нужны программисты, достаточно говнокодеров.Jouretz
10.06.2019 15:42Чего вы так бомбите? Просто я говорю что зная вышку вам будет проще устроиться в любой из этих областей, без знаний вы тоже устроитесь но прийдётся доучиваться на месте. Всего-то проблем.
Если вам достаточно обращения в своей области и нет желания узнавать/разрабатывать ничего принципиально нового то да, вышка вам не нужна.adictive_max
10.06.2019 15:57+1Бомблю я от того, что некоторые одухотворённые личности считают, что в условной команде из 200 человек, непосредственно работающих над кодом, называться «высоким званием программиста» могут от силы человек 15-20, а я, как неотёсанный пролетарий, считаю, что это всего лишь должность, которой соответствуют 150-180.
Собственно из-за этого все споры, что почти всегда речь идёт о найме на должность, но требования предъявляются, как к высокому званию.и нет желания узнавать/разрабатывать ничего принципиально нового
А вот сейчас даже слегка обидно было. Причём даже не за себя, а за авторов подавляющего большинства всех библиотек и фреймворков, которыми пользуюсь, т.к. чего-то принципиально нового на основе именно высшей математики там кот наплакал. Не знали они, что создавали что-то новое и нужное, но раз для понимания их работы не нужно высшее образование, значит несчитово.Jouretz
10.06.2019 16:15Уговорили, давайте уже примеры библиотек и фреймворков от «необразованных» авторов.
Мне просто нужен термин, чтоб отличать этих 15-20 человек из вашей условной команды от оставшихся 180, не нравится вам «специалист» предложите другой.adictive_max
10.06.2019 16:31Берёте npm, composer, NuGet или любой другой публичный репозиторий пакетов для любого языка широкого профиля, и смотрите исходники. В 90% случаев там если и будет «математика», то максимум на уровне 8-го класса средней школы. Причём независимо от востребованности пакета.
ЗЫ. Питон — немного особый случай, сказывается специфика предметной области, тут будет процентов 60-70.iig
10.06.2019 16:37+1Берёте npm, composer, NuGet или любой другой публичный репозиторий пакетов для любого языка широкого профиля, и смотрите исходники.
Хочется видеть не исходники с математикой за 8 класс, а хороших программистов не изучавших никогда математику.adictive_max
10.06.2019 16:45А что, вот это вот всё писали исключительно плохие программисты?
Ещё раз, вы требуете то, чего вам никто не обещал. человек не использующий математику и человек не изучавший математику — это совершенно не одно и то же.
Как я вам в принципе докажу, что человек чего-то не изучал? Да никак.
Как доказать, что высшая математика не так широко используется? — ну вот, огромная база востребованного кода, в которой математики нет.iig
10.06.2019 17:17Утверждение 1: программист математику в своей работе не использует.
Предположим, что утверждение истинно. Раз математика в работе не используется — изучать ее не обязательно. Значит, должно существовать непустое множество программистов, математику не изучавших.
Правильно? ;)
Jouretz
10.06.2019 16:4890% npm-а откровенный шлак, любой кто больше пары лет в js-е вам это подтвердит. Я просил примеры реально хороших и полезных фреймворков созданных людьми без мат.образования.
adictive_max
10.06.2019 16:55А я просил примеры людей с инженерным образованием, но без математического. Не обязательно хорошим, хоть каким-нибудь.
Jouretz
10.06.2019 17:05У меня? оО
Я вроде в другую сторону воюю.adictive_max
10.06.2019 17:32Вы воюете в сторону, что все инженеры изучают высшую математику целенаправленно по зову души. А на самом деле у них выбора нет. Хороший программист, не изучавший никогда математику — это 100% самоучка, который даже в старшую школу не ходил. Можете на память назвать хоть одного?
Причём даже в этом случае в нужном ему объёме он её всё равно освоит, просто как побочный эффект, даже если цели себе такой ставить не будет.
О я наконец нашёл подходящую аналогию. Вы говорите, что чтобы говорить на иностранном языке, нужно обязательно отучиться на переводчика, изучив по ходу дела филологию и лингвистику, зазубрив все 100500 особенностей местной грамматики, культурный бекграунд, и только тогда вы достигните высот понимания языка.
Но большинству, включая носителей, не нужны академические высоты, они на нём просто говорят. Говорите почаще, на разные темы, на сложные темы, и со временем у вас будет практический навык актуального живого языка, а не театрального 5-стопного ямба, который хорош в переводе классической литературы, но не особо помогает провести деловые переговоры.Jouretz
10.06.2019 17:43В вашей аналогии я говорю, что для изобретения новых языков и грамматик, а так же для понимания причин возникновения различных словарных «исключений» нужно выучиться на лингвиста. Для простого разговора действительно достаточно знания языка.
Выбор есть: самообучайся, конкурируй. Нынче диплом о вышке разве что в НИИ всякие хотят, но там и зарплаты не то чтоб огонь.
Есть миллионы книг типа «C++ за 10 минут», а вот статистики кого чаще нанимают людей с высшим образованием, либо людей прочитавших эти книги у меня нет.
koldyr
10.06.2019 17:03Я бы предложил термин "кодер". Описывает специалиста по композиции библиотечных функций, не интересующегося " протекающими" абстракциями.
adictive_max
10.06.2019 17:10А специалиста по композиции библиотечных функций, интересующегося «протекающими» абстракциями?
Moxa
11.06.2019 21:47знание математики в половине приведенных областей ну никак не поможет устроиться. Я, как ведущий разработчик, не буду смотреть на знания кандидата в математике, она не нужна в моей сфере
iig
10.06.2019 15:50если возникает необходимость в чём-то реально сложном, нужные знания восполняются за 1-2 недели с минимальной посторонней помощью или даже вообще без
Студент за неделю до сессии, как есть описан ;)
И что это доказывает? То, что осилившийбогословиевышку в вузе точно способен чему-то научиться. И javascript, если будет нужно, тоже выучит. Тот, кто подобных тренингов не проходил, возможно, тоже.
Пример хорошего програмиста-никогда-вышку-не-учившего всё еще не приведён ;)
RussDragon
09.06.2019 14:59+1это матанализ, линал, дискретка, теория вероятностей, матлогика
Скажите честно, этот список вы озвучили потому, что вас в ВУЗе так учили, или потому что вы действительно используете полный матаппарат в своих ежедневных задачах? :)
Нет, я не пытаюсь отрицать полезность хорошей мат. подготовки программиста – в ряде задач она упрощает жизнь, а иногда и вовсе без неё не обойтись. Но существует огромный пласт, где можно жить и без знаний тервера и матанализа, при этом оставаясь первоклассным разработчиком и программистом.0xd34df00d
09.06.2019 15:23-1Я регулярно использую матлог (и чуть глубже булевой алгебры и законов де Моргана) и теорию типов. При этом я интуитивно ощущаю, что знаний мне не хватает, и сейчас ботаю алгебру.
Когда занимался машинным обучением (и пока из него не ушел), естественно, был и теорвер, и статы, и линал.
RussDragon
09.06.2019 15:29+1Что, вроде бы, моему комментарию никак не противоречит. Я просто стараюсь избегать навешивания на людей ярлыков, особенно исходя из в целом субъективных размышлений. И, как по мне, спор о важности математики — весьма субъективен.
sshikov
09.06.2019 17:04Нужность математики скорее зависит от вида решаемых задач, так что ближе к чему-то объективному.
Я бы таки учил программистов математическому аппарату. Те же упомянутые выше законы де Моргана — вещь достаточно тривиальная, и вполне доступны ребенку на уровне 7-8 классов. При этом я регулярно встречаю людей из IT, которые на таком же примитивном уровне ошибаются налево и направо.
Есть много областей, где можно быть программистом не зная всего этого вовсе? Да, тут вы правы. Но когда речь идет о том, как стать программистом, трудно игнорировать вопрос, каким программистом вы хотите быть. Неужели таким, который чуть вышел за пределы повседневных задач — и все, знания закончились? Я даже про зарплату не говорю, но хотите ли вы навсегда (надолго) ограничить свой круг решаемых задач? Это ведь и скушно в конце концов.dimoff66
09.06.2019 17:30Пограммировать никогда не скучно, скучно просидеть сотни часов на лекциях по высшей математике, сведения о любом разделе которой при необходимости с примерами и теорией в нужный сомент вы за 5 минут найдете в интернете. Прграммирование это искусство, а не багаж знаний об алгоритмах.
DrPass
09.06.2019 18:18-1Прграммирование это искусство, а не багаж знаний об алгоритмах.
Да, и работа врача — это искусство, а не багаж скучных знаний об анатомии, физиологии, биохимии и прочей ненужной фигне.
RussDragon
09.06.2019 22:33Неужели таким, который чуть вышел за пределы повседневных задач — и все, знания закончились?
Я знаю немало отличных специалистов, которые знают математику исключительно на том уровне, который требуется для решения их рабочих задач. Они пишут эффективный, надёжный код, но у них нет никакой нужды тратить свободное время на изучение того, что они не используют. Это не характеризует, как мне кажется, их как плохих или посредственных программистов.
Математика – просто инструмент. Его необходимо, по моему мнению, знать ровно в том объеме, чтобы уметь хорошо решать поставленные задачи. Если задачи не требуют знаний высшей математики, то значит, в принципе, человек может, на данный момент, не погружаться в её пучины и не тратить на это время.
Время – сейчас практически единственный ценный ресурс. Когда мы выбираем что изучать, мы, вероятно, откладываем или вовсе отметаем изучение чего-то другого. Это нормально, это наш ежедневный и ежеминутный выбор (как например я сейчас – пишу комментарий вместо чтения книги). Есть то, что изучать необходимо, а есть то, что мы изучаем в качестве увлечения и развлечения. То есть для себя.
Когда начальство переводит платформу на новый язык программирование, то изучение этого языка становится необходимостью. Не изучите – можете потерять работу. Когда вы сами начинаете изучать новый язык, то это просто ваше увлечение. Вы выбрали потратить на него своё свободное время, потому что это приносит вам удовольствие.
Так же дела, по-моему, обстоят и с математикой. Нет никакой нужды изучать её сверх меры, если только это не ваше личное увлечение. Она просто инструмент. Нужна – изучите. Не нужна – потратьте время на то, что считаете более приоритетным и полезным.
Плохой специалист тот, который не решает поставленные задачи. Если он решает их не оптимально, это не всегда значит, что он решает их плохо. Иногда не позволяет время, иногда не позволяет ситуация. Иногда сугубо математический подход приводит к тому, что bus-фактор падает до единицы.
Я знаю математиков, который пишут отвратительный код. Знаю программистов без математической базы, которые пишут отличный код. Знаю разные комбинации с разными исходами. Поэтому я прекрасно понимаю, что корреляция может и есть, но она не является причинно-следственной связью.
Давайте просто перестанем клеймить людей, основываясь на своих задачах и своём опыте. То, что математика ежедневно нужна вам для решения задач, не значит, что она нужна ежедневно мне. И это — абсолютно нормально.
Я считаю, что хороший программист – человек, который умеет задавать вопросы и добывать на них ответы. Всё остальное – уже лирика.
P.S. Чтобы избежать обвинения в предвзятости замечу, что я сам довольно очень часто использую основы линала, ангема и дискретной математики. Где-то приходится углубляться в теорию, где-то достаточно основ и «интуитивного понимания». Впрочем, знаю людей, кто решает схожие задачи и без мат. аппарата, получая на выходе хороший рабочий продукт.akryukov
09.06.2019 22:46-1Прекрасно понимаю, что хорошо делать ограниченный круг задач можно и без знания математики. Однако заявления что "первоклассному разработчику математика не нужна" роняет планку "первого класса" до уровня выпускников курсов.
Может быть первым классом все таки будем называть тех у кого действительно обширные знания, а не просто "хороших работников"?RussDragon
09.06.2019 22:56-1Однако заявления что «первоклассному разработчику математика не нужна» роняет планку «первого класса» до уровня выпускников курсов.
Не передергивайте, я такого не говорил. Первоклассный ~= знающий всё.
Первоклассный, по моему мнению, тот, кто умеет быстро адаптироваться к разным условиям и решать задачи, которые, возможно, вообще до этого не решал. То есть это тот, кто умеет быстро осваивать и применять новые навыки, технологии и инструменты.
Математика в данном случае частность.
sshikov
10.06.2019 07:29Давайте начнем с простого — я не вижу, чтобы тут кого-то клеймили за незнание математики. Да, это инструмент, и причем не единственный. Многим нужно уметь проектировать взаимодействие с пользователем, и это отдельное умение, кому-то — делать красивый дизайн, кому-то погружаться в бизнес. Есть много других умений, которые полезны программисту, то что вы пишете про вопросы и ответы — скорее всего одно из важнейших.
Вся эта ветка началась вот с этого комментария, и я не вижу там того, с чем вы спорите. Там на мой взгляд написано вот что: нормальная программа обучения — это (и далее длинный список, включая математику). Т.е. основа — не язык программирования, а много чего разного.
Все остальное — это скорее личный опыт, который мне тоже говорит вполне определенно — все знакомые хорошие разработчики имеют приличный уровень математики. Большинство знакомых плохих в математике плавают. Не только в ней — зачастую плавают и в грамматике, в родном языке, в умении задавать правильные вопросы и формулировать свои мысли. Можно считать это совпадением, а можно и нет.RussDragon
10.06.2019 16:18Давайте начнем с простого — я не вижу, чтобы тут кого-то клеймили за незнание математики.
Комментарий господина akryukov показывает мне обратное:
Первоклассным? Вряд ли. Посредственным, достаточным для работы? Вполне
Там на мой взгляд написано вот что: нормальная программа обучения — это (и далее длинный список, включая математику).
«Длинный список» там состоит на 5/6 из перечисления разделов высшей математики. Нет, сама по себе она не плоха – плохо то, что человек ставит её во главу угла как самое важное.
Можно считать это совпадением, а можно и нет.
Тут есть простая корреляция – человек, сумевший освоить определенный уровень математики, уже наверняка будет иметь неплохие когнитивные способности и восприятие к абстракциям. Однако это не значит, что человек без математики этими особенностями обладать не будет.
pyrk2142
09.06.2019 18:16+3Мне довольно часто приходится использовать базовый математический аппарат в обычной деятельности. Как бы это просто не звучало, но реализовать ту же авторизацию на сайте безопасно (например, понять, как быстро кто-то сможет взломать произвольный аккаунт брутфорсом четырехзначного кода, у большого количества программистов не получается) не так просто, если нет относительно хорошего понимания происходящего и умения считать. Это крайне базовая математика, но без ее понимания можно сделать кучу ошибок или лишиться работы/премии, смотря кому что важнее.
Понятно, что математика — это не святой обязательный инструмент, но знать основы может быть довольно полезно.extempl
09.06.2019 21:36+1как быстро кто-то сможет взломать произвольный аккаунт брутфорсом четырехзначного кода
Кейсы как этот уже давно кем-то просчитаны и задокументированы. И даже выведены специальные рекомендации и общепринятые подходы. Я смогу это посчитать, если будет нужно. Но, зачем?
Да и речь не про базовое умение считать, чаще вспоминают теорвер, матан и дискретную математику.
А ещё, самое интересное, что базовое решение от брутфорса — не усложнение пароля. А ограничение возможности сделать брутфорс в принципе. То есть да, можно сделать обязательной длиной 14 символов, но от брутфорса (как действия) это, собственно, не спасёт. Соответственно — к чему просчитывать?
GrigoryPerepechko
09.06.2019 12:41+9Соболезную всем, кто получает от вас ответы на вопросы про программирование.
Scf
09.06.2019 12:41+5Как начать программировать новичку бесплатно
без смс и регистрации.
По теме — статья очень низкого качества, не нужно ей следовать
Dreyk
09.06.2019 13:00+7что если я не хочу бесплатно программировать? хочу, чтобы мне за это платили. стоит читать статью?
:-D
sbnur
09.06.2019 13:08+2Вспомнилось
Не писал стихов — и не пиши!
Лучше погуляй и подыши.
За перо поспешно не берись,
От стола подальше уберись.
Не спеши, не торопись, уймись,
Чем-нибудь, в конце концов, займись.
Выброси к чертям карандаши.
Полежи, в затылке почеши.
Суп свари, порежь на кухне лук.
Выпей чаю, почини утюг.
Новый телевизор разбери — Посмотри, что у него внутри.
Плюнь в окно и в урну попади!
В оперетту вечером пойди.
Вымой пол, прими холодный душ,
Почитай на сон грядущий Чушь...
Что-нибудь, короче, соверши!
Не писал стихов — И НЕ ПИШИ!
А.Иванов
iig
09.06.2019 13:23Перед вопросом "как начать ХХХ (играть на гитаре, вести ЗОЖ, программировать)" всегда нужно задавать вопрос "зачем это начинать".
ganqqwerty
09.06.2019 14:51У меня создалось впечатление, что автор просто взял список некоторых случайных ЯП, загуглил по ним курсы и накопирайтил по абзацу на каждый. Это не ценно.
Ценно — это, например, выбрать конкретную область или стек, пройти по ним все курсы, до каких получится дотянуться, найти ещё человек 20-100 таких же самоучек, провести опрос среди них, сравнить их по различным параметрам и скомпилировать это в статью. Это может помочь новичку. Так, кстати, некоторые ребята на хабре делают.sshikov
09.06.2019 17:06+1Загуглил курсы — и случайно наткнулся на три курса одного автора? Ну что вы, тут явно заказом пахнет… :)
Anshi85
09.06.2019 14:57Я лично на вопросы очередного знакогомого или друга с чего начать входить в ИТ, советую ему подумать, действительно ли он этого хочет и подумать не раз и не два, а пару дней, а лучше неделю. Да хелловорлд написать легко, синтаксис практически любого языка до ООП, можно освоить за пару дней, но дальше начинаются сложности, чтобы запилить свой сайт надо знать немного бекенд и фронтенд, знать Linux, HTTP и HTTPS, Rest API, те же GET, POST, PUT, DELETE, уметь писать хотя примитивные запросы к БД чтобы можно было вытащить данные из БД на фронтенд, HTML, CSS. А когда все это освоишь, то поймёшь что рынок перенаселен такими как ты новичками и особо никому ты не нужен. В общем если идти в ИТ, только ради денег или стильно модно, молодежно, то есть риск потерять весь запал и бросить или всю жизнь работать на ненавистной работе скрепя зубами, другое дело если всегда любил компьютеры, тогда вопрос почему ты до сих пор не в ИТ?
DrPass
09.06.2019 15:32но дальше начинаются сложности, чтобы запилить свой сайт надо знать немного бекенд и фронтенд, знать Linux, HTTP и HTTPS, Rest API, те же GET, POST, PUT, DELETE, уметь писать хотя примитивные запросы к БД чтобы можно было вытащить данные из БД на фронтенд, HTML, CSS
Ну, не перегибайте. Чтобы запилить свой сайт, нужно знать HTML, CSS и немного JavaScript. И уметь копировать файлы из одной папки в другую. Всё остальное — опционально, в зависимости от задач. И в случае массового сайта-визитки вообще не понадобится. Да и учится всё то до уровня «не профессионал, но при необходимости разберусь и могу использовать» за несколько недель при желании.
timelle
09.06.2019 15:14Если кратко: HTML != XML
Хотя бы в том аспекте, что HTML используется для визуальной разметки документа, а XML — для структурирования и передачи данных.
Зная, допустим, HTML5, вы вряд ли автоматический будете знать SOAP.
index0h
09.06.2019 15:40Статья из серии "как потратить время".
Лично я уже на 3 день написал простенький, но интересный сайт.
Для того, что бы устроиться хотя бы юниором того же PHP потребуется минимум год/два, а то и больше довольно интенсивной практики.
igormich88
09.06.2019 16:07Кстати было бы интересно просмотреть на тот сайт(вопрос к автору статьи Munoon)
a-tk
09.06.2019 18:29+1Ключевое слово — бесплатно. То бишь даром. То бишь сначала для себя, в учебном режиме, а потом уже о чём-то ещё думать.
MrAwesome
10.06.2019 00:01Нужна статья как начать писать на хабре новичку бесплатно.
IvUyr
11.06.2019 17:09«Я всегда рекомендовал и рекомендую купить курсы и учиться там. На курсах есть чёткая программа обучения, которая построена годами, и код ревью. А это очень важно для новичков.»
Когда Я учился (на программиста, угу), нашу группу препод заставил пройти курс на «программирования» на одном сайте, который я не буду упоминать. Ну и получить «сертификат» о прохождении курса. На первом же «занятии» нам рассказывали о… html и css!..
Jouretz
«Как написать HelloWorld на пяти языках и не выучить ни одного из них»
Munoon Автор
Возможно. Когда я писал статью тоже думал об этом и держал это у себя в голове, но смысл не столько научиться программировать сколько определиться с направлением и интересами.