Актуальность
Профессия программиста не нуждается в рекламе. Никто даже не задумывается, что один терминал самообслуживания может сократить количество сотрудников банка. Выдать наличку и принять оплату вполне может и «робот». А чем больше таких терминалов, тем больше работы у программистов.
Там, где есть компьютеры, где необходимо оптимизировать рабочий процесс, облегчив работу человека, повысив при этом эффективность бизнеса, - востребованы программисты. Смартфоны, планшеты, смарт-часы, фитнес-браслеты, системы управления умным домом, дроны (например, роботы-уборщики) требуют огромной армии программистов.
Сегодня начать карьеру в программировании может каждый — даже совсем далекий от этой сферы человек, достаточно просто уметь пользоваться компьютером на базовом уровне. Пандемия ускорила переход бизнеса в онлайн. Поэтому IT-специалисты уверенно смотрят в будущее и не боятся остаться без работы.
Крупные IT-компании создают настолько привлекательные условия труда, что уже стали законодателями мод среди работодателей. Сфера IT развивается так быстро, что заставляет постоянно учиться. Всегда есть выбор: развиваться в профессии дальше или изменить специализацию, ведь в программировании много направлений.
Многие школьники начинают изучать программирование ещё в раннем возрасте, если хотят, чтобы их профессия была связана с этой темой, но часто они бросают эту затею, так как по началу очень сложно самому разобраться в этом вопросе. И для того, чтобы не тратить большое количество времени, я решил выявить самый лучший способ из всех.
Цель
Выявить плюсы и минусы различных способов изучения языков программирования, найти самый эффективный и наиболее удобный.
Какой язык выбрать?
Изучение программирования — не то, чем можно заниматься между делом. Но не нужно тратить всю жизнь, чтобы понять основы. Есть множество способов облегчить себе обучение.
Нередко бывает, что новички начинают учиться, уже зная что-то о программировании. Сначала всё идёт хорошо, но по мере дальнейшего изучения начинаются проблемы. Почему? Новички быстро пробегают вступительную часть, думая, что и так всё знают, но на деле это бывает редко. Они знают часть материала, но этого недостаточно, чтобы хорошо понять основы.
В то же время нельзя прекращать развиваться. Вы можете двигаться медленно или быстро, но не пропускайте ни одну тему. Осваивая больше материалов, вы создаёте себе фундамент для будущего.
Если вы ищете своё призвание и вам интересно программирование, вы наверняка задавались вопросом, с чего начать погружение в эту сферу. Один из возможных путей в IT — изучение языков программирования. Так вы освоите первый инструмент будущей профессии: HTML и CSS для вёрстки страниц, Java и Swift для мобильной разработки, SQL для работы с базами данных, а JavaScript и Python — для веб-разработки и не только.
Языки программирования можно освоить самостоятельно — нужно лишь большое желание, целеустремлённость и наличие времени.
Чтобы выбрать лучший язык для начинающих, я создал таблицу сравнения самых популярных языков по 10-ти бальной системе.
| Скорость обработки | Читабельность | Простота | Графический интерфейс пользователя | |
| C | 7 | 6 | 2 | 3 | 
| C++ | 7 | 6 | 3 | 4 | 
| C# | 6 | 7 | 5 | 6 | 
| Java | 5 | 5 | 6 | 7 | 
| Python | 5 | 6 | 10 | 8 | 
| Assembler | 10 | 1 | 1 | 1 | 
В сравнении с проанализированными языками программирования,
 изучение Python имеет ряд преимуществ:
- Простота освоения. 
- Лаконичность. 
- Удобный синтаксис и простая семантика. 
- Интерпретируемость. 
- Широкая сфера применения. 
- Обширная поддержка библиотек. 
- Большое количество документации и обучающих материалов. 
Python — быстро развивающийся язык с большим количеством библиотек, фреймворков. Он хорошо подходит для начинающих благодаря простому синтаксису и минималистичности. Главные минусы — низкая скорость и слабая мобильная разработка. Python — замечательный выбор, если вы хотите заниматься веб-разработкой, DataScience, машинным обучением, нейросетями или автоматизацией, а ещё если вы новичок в программировании и пока не знаете, с чего начать.
Способы изучения языка Python
- литература 
- видео-уроки 
- курсы по программированию 
- наставник 
Исследование
Выявление наиболее эффективного способа обучения программированию потребовало от меня выполнения нескольких практических шагов. Для начала я выявил уровень "общей" компьютерной грамотности среди учеников нашего класса, не владеющих никаким языком программирования. Четверо, обладающие средними знаниями в компьютере случайным образом получили, каждый свой, способ обучения Python.
Из всех я отобрал 4 человека с одинаковым уровнем компьютерной грамотности, рассказал суть эксперимента и дал каждому из них свой способ программирования.
Ученику №1 – Книгу, №2 – Видео-уроки, №3 – рассказал, как начать изучать программирование самому, №4 – учил сам.
В течении недели они изучали программирование, каждый свои способом. После чего я дал тест по знанию языка Python и спросил мнение обучающихся по их способу. Затем составил на основе собранной информации таблицу, в которой оценил каждый способ по 5-ти бальной системе, где 5 – наивысший балл, 1 – наименьший.
Оценка методов по разным критериям.
| Литература | Видео-уроки | Курсы | Помощь наставника | |
| Простота | 3 | 5 | 4 | 5 | 
| Качество | 3 | 5 | 5 | 5 | 
| Удобство | 5 | 5 | 5 | 3 | 
| Актуальность | 2 | 5 | 4 | 5 | 
| Время | 3 | 4 | 5 | 4 | 
| Цена | 4 | 5 | 1 | 1 | 
| Общий балл | 20 | 29 | 24 | 23 | 
Вывод
В ходе выполнения работы мной были изучены различные способы изучения языков программирования. Изучив и проанализировав их были выявлены плюсы и минусы каждого из способов.
Результатом моего исследования стала таблица, которая наглядно показывает плюсы и минусы книг по программированию, видео-уроков, интернет-курсов и репетитора.
Среди всех с достаточно большим отрывом выигрывают видео-уроки. Знатоки, которые создают эти уроки, на столько подробно и доступно всё объясняют, что даже человеку, далёкому к данной теме не составит труда разобраться в программировании.
Все эти методы не плохи, но у них присутствуют разные минусы, закрыть глаза, на которые сможет не каждый.
Комментарии (31)
- DrPass18.06.2022 03:35+4- Чтобы выбрать лучший язык для начинающих, я создал таблицу сравнения самых популярных языков по 10-ти бальной системе. 
 Я не знаю, как вы её заполняли, но если будете просто подбрасывать кубик, результат будет не менее релевантным чем тот, что у вас. Но если вам больше всего нравится Пайтон (или вы знаете только его), можно ведь было просто сразу написать об этом, а другие языки можно было не упоминать :)
 - SergeiMinaev18.06.2022 03:45+4- по 5-ти бальной системе, где 5 – наивысший балл, 1 – наименьший. - Извиняюсь за придирки, но разве в 5-бальной системе 5 может не быть наивысшим баллом?) - Среди всех с достаточно большим отрывом выигрывают видео-уроки. Знатоки, 
 которые создают эти уроки, на столько подробно и доступно всё
 объясняют, что даже человеку, далёкому к данной теме не составит труда
 разобраться в программировании.- Выскажу своё субьективное мнение. 
 1) В видео нет поиска по словам. Поиск посредством перемотки - боль. Пока будешь перематывать на нужный участок, можно двести раз погуглить и прочитать. Особенно радует, когда во время спора в чате один из спорящих даёт другому, в качестве аргумента, ссылку на 4-часовое видео с фразой - "Да вот, тут всё описано, посмотри".
 2) Программисту необходимо заранее учиться читать тех. документацию. Просмотр видео вместо чтения на этот навык влияет, имхо, негативно. Да, всё зависит от человека - кто-то хорошо запоминает, читая, а кто-то лучше воспринимает ушами. Но учиться читать всё равно придётся и лучше начать делать это заранее. - randomsimplenumber18.06.2022 09:19+1- разве в 5-бальной системе 5 может не быть наивысшим баллом?) - Вроде как у немцев школьные оценки наоборот ставились . 1 - отлично, 5 - очень плохо. 
  - vmkazakoff18.06.2022 16:43- Да. У Пушкина 1 было высшим баллом, 4 низшим и ещё вроде был 0 как самый низший. Они тогда исправляли нули на четверки в дневнике. 
  - Dark_Hobbit20.06.2022 09:46- Извиняюсь за придирки, но разве в 5-бальной системе 5 может не быть наивысшим баллом?) - в Чехии они идут наоборот, 1 это наивысший балл. От страны зависит) 
 
 - Schokn-Itrch18.06.2022 07:00+1- В ходе выполнения работы мной были изучены различные способы изучения языков программирования. Изучив и проанализировав их были выявлены плюсы и минусы каждого из способов. - И какой из "способов изучения" ASM/C всподвиг ваше величество поставить их ниже питона? 
 - Lazytech18.06.2022 07:12+3- В "таблице сравнения самых популярных языков" (TM) почему-то отсутствует мегапопулярный JavaScript, зато туда как-то затесался Assembler. :)  - randomsimplenumber18.06.2022 11:25+2- Ассемблер очень простой язык. Никаких UB, никаких однострочных головоломок в perl-style. Никаких ООП. Никаких 2 + '2'. Выучить просто.  - Lazytech18.06.2022 13:20- Напомню, в вышеупомянутой таблице речь идет о популярных языках, к коим ассемблер вроде бы не относится. - DrPass18.06.2022 13:47+4- Судя по… - В ходе выполнения работы мной были изучены различные способы изучения языков программирования 
 … парень просто запостил на хабр свой реферат. И по-моему, как для уровня реферата старшеклассника или первокурсника, вполне сойдёт :)
 
 
 
 - GavriKos18.06.2022 08:15+5- Когда много лет назад защищал диплом, многие студенты говорили фразу "мое решение эффективнее". И один препод задавал всем один и тот же вопрос - "А как вы измеряли эффективность?". Так вот. Без критериев и методов оценки ваша таблица - фигня. 
 - roundzero18.06.2022 09:27+1- Язык программирования это инструмент, как дрель. Чтобы был результат надо не просто язык учить, но осваивать анализ, алгоритмизацию, помните блок-схемы на доске? Прикладные аспекты. Даже написать игру lunar lander требуется знать физику. А язык не особо важен. Зная один, остальные легко осваивать. И уже тогда выбирать язык под задачу и не писать на джаве управление теплицей.  - igor_carenko18.06.2022 09:30-3- Можно подумать, многие читают инструкцию к инструменту, например, к дрели) 
 
 - saipr18.06.2022 09:29+1- А вот как начиналось моё обучение программированию 50 лет назад: - Обучение началось с изучения систем счисления. Всё что я знал до этого момента про счёт – это арабские и римские цифры. А оказалось, что в повседневной жизни мы пользуемся десятичной системой счисления, а вот для электронно-вычислительных машин это совсем не подходит и в них используется двоичная система счисления, состоящая из нулей и единичек. А ещё есть восьмеричная система счисления от 0 до 7 и даже шестнадцатеричная от 0 до 9, а далее A, B, C, D, E, F. Последняя система вводила в ступор: символ «А» это же буква, а не цифра! - Закончилось оно таким уроком: - Представь себе кучу пронумерованных/подписанных спичечных коробков, в каждом из которых лежит какое-то количество спичек. Коробок со спичками – это и есть ячейка. Адрес ячейки – это номер коробка или его название. Теперь предположим, что надо узнать, сколько всего спичек хранится в пятом и десятом коробках вместе, т.е. выполнить операцию сложения, и такое же количество спичек положить в коробок с номером 15. Заглядываем в коробок №5 и запоминаем сколько в нём спичек, затем аналогичным образом поступаем с коробком №10, складываем запомненные значения. Это и есть то количество спичек, которое нужно положить в коробок №15. ЭВМ делает тоже самое, только не с коробками, а с ячейками памяти - Невольно возник вопрос после прочтения абзаца: - Способы изучения языка Python\ 
 литература
 видео-уроки
 курсы по программированию
 наставник- А как учить другие языки? Какие использовать способы? - DrPass18.06.2022 13:17+1- Это и есть то количество спичек, которое нужно положить в коробок №15. ЭВМ делает тоже самое, только не с коробками, а с ячейками памяти 
 Ну а я в десять лет нашёл в библиотеке учебник прикладной физики, где одна глава была посвящена логическим элементам на диодно-резисторной логике, и потом из них складывался сумматор. Так что вы ещё легко отделались в процессе входа в ИТ.
 
 - MentalBlood18.06.2022 11:57+2- У C простота 2/10? Категорически не согласен. В C на порядок-другой меньше концепций, чем в Python. И начинать лучше с C, потому что он проще и строже - P.S. И простота C++ при этом 3/10. Ну да, ну да  - bromzh19.06.2022 23:50- А чем Си со слабой типизацией (то есть с неявным приведением типов) строже сильной типизации питона? - В C на порядок-другой меньше концепций, чем в Python - При этом одна из концепций - ручное управление памятью - сводит на нет всю "простоту" языка. Написать на C код с утечками памяти очень просто, а вот без них крайне сложно даже опытным людям.  - MentalBlood20.06.2022 10:03- C строже необходимостью аккуратной работы с памятью - сводит на нет всю "простоту" языка - Но язык то простой. Brainfuck, например, еще проще, потому что еще меньше концепций. И разве не существует миллион библиотек для автоматизации free и проверок, если уж не нужен такой низкий уровень?  - bromzh20.06.2022 12:40+1- А зачем учить простой язык на котором сложно писать работающие программы? Может лучше взять язык чуть посложнее, но на котором стрельнуть в ногу будет сложнее, и который более востребован сейчас? Ручная работа с памятью нужна только в немногих сферах разработки. Гораздор более широкая часть разработки использует языки с GC. - Вот выучит человек C, станет си-джуном. Куда он сможет устроиться на работу?  - MentalBlood20.06.2022 14:21- Может лучше взять язык чуть посложнее - "чуть" — можно, например Lua. А не Python и прочее ООП. ООП востребовано, но начинать лучше с элементарного - Вот выучит человек C, станет си-джуном - Пусть потом выучит например Python и станет Python-джуном. После C это не займет много времени  - bromzh20.06.2022 15:28- Так питон можно учить и без ООП. Более того, там много функций сделаны не как методы, а именно как функции (map, len, etc). Там functools в комплекте есть. И в нём есть очень много концепций из разных языков: генераторы, асинхронщина, ООП, ФП, типы. 
 Какой смысл учить один язык без ООП, чтобы потом для изучения ООП переключиться на другой?
 «Вот, ученик, ты выучил Си. Теперь мы будем учить другой язык с другими парадигмами и другим синтаксисом, так что 90% знаний из си тебе не пригодится» - MentalBlood20.06.2022 17:32- Там functools в комплекте есть - Там вообще так много всего в комплекте есть, что и учить, казалось бы, ничего не нужно — только синтаксис и интерфейсы библиотек - Какой смысл учить один язык без ООП, чтобы потом для изучения ООП переключиться на другой? - Выучить два языка вместо одного, очевидно же. Конкретно для Python на C еще и расширения писать можно 
 
 
 
 
 
 
 - Dolios18.06.2022 14:23+2- Какой способ лучше всего подходит, чтобы начать изучать программирование? - Начать программировать. - Какой язык выбрать? - Любой, который не будет отвлекать от азов. С, Pascal, Python, Javascript. ООП на первом этапе не нужно. Язык — это инструмент. Начиная учиться пользоваться молотками, выбирайте самый простой. 
 - Aleks_ja18.06.2022 14:50- Пост напоминает курсовую работу. В том числе и по уровню.  - randomsimplenumber18.06.2022 15:28+2- Пост напоминает курсовую работу - Только не в программистском ПТУ, а в педагогическом. 
 
 
           
 
Schokn-Itrch
Заголовок начинает раскрываться п пятом пункте и сразу закрывается. Чистый пиар питона.
Если под "Скорость обработки" понимается реальное выполнение, то, учитывая что ASM получил 10, а C 6-7, Java должна была получить 0-1 (причем это зависит от платформы), а питон уйти глубоко в минус (вне зависимости от платформы).
nochkin
Там вся табличка очень уж какая-то не объективная. Например, Python в два раза проще C#, но читабельность у C# выше.
Про "графический интерфейс" там вообще не понятно без зацепки о какой среде вообще речь.
Schokn-Itrch
Я даже перечитал свой сумбур из песочницы. Вроде бы структурность есть.. Логика есть... А тут ее почему то нет. Ну нет "выбора". Есть "тыканье кота в миску питона".
Stepan40k
Чтобы сравнивать быстродействие разных языков, неплохо бы, из уважения к хабровчанам, привести бенчмаркинг на тестовой задаче. А просто сказать, что Питон всего на 30% медленее С - это очень мощный бросок на вентилятор
vriska
Нужно учитывать ещё то, что С можно компилировать с агрессивными оптимизациями, а ассемблер — не сильно. Среднестатистический человек скорее напишет одну и ту же программу на С и ассемблере так, что вариант на С окажется быстрее.