Особенности изучения языков программирования

Алгоритм изучения ЯП

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

Хоть вся информация доступна для изучения в открытых источниках, но нет предложенного единого подхода к каждому языку программирования. Я решился это исправить, создав некий “Алгоритм” для изучения самых популярных языков программирования (На момент написания статьи – Python, Java, C++).

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

Сразу же попрошу заметить, что подход к изучению у разных ЯП в любом случае будет отличаться, и тут (в этой статье) будут лишь основные направления, которые вам будут нужны. Каждый из пунктов разбит на несколько подпунктов, которые в свою очередь имеют описание и ссылаются на определенные статьи (Каждая из использованных автором статей НЕ написана им. Они приведены лишь для примера).

1. Определение, какой ЯП тебе нужен.

Наиболее легкие и простые ЯП для новичка – C, Java, Python. Если вы только познаете мир IT, то рекомендую начинать с них. Так же выбирать язык надо в зависимости от конечных целей изучения ЯП, поскольку каждый из них необходим для разных областей.

Статья для помощи — https://habr.com/ru/company/ruvds/blog/315572/

2. Поверхностное изучение выбранного языка

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

(Здесь и далее – все статьи будут приведены только для ЯП Python в связи с личными предпочтениями автора статьи) Неплохая статья для получения первичных знаний — https://techrocks.ru/2019/01/21/about-python-briefly/

3. Изучение базового синтаксиса:

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

Статья(Возьмите из нее лишь числа и строки, больше не надо) — https://tproger.ru/translations/python-data-types/

Вывод данных на экран/консоль и ввод данных с клавиатуры

Сложение, вычитание, деление

Проще увидеть, чем объяснить (Сложение двух строк, счёт символов в строке и т.п.)

Одно число больше/меньше/равно другому

f. Условные инструкции и их подвиды

4. Усложненный синтаксис:

Некоторые сгруппированные объекты, хранящиеся в одной переменной

Как таковых массивов в питоне нет, но они есть в других ЯП

Примеры статей для C, C++, Java, JavaScript

5. Оставшиеся данные:

d. Правила оформления кода

После изучения всего вышесказанного — можно считать себя полу-джуном. И на этом этапе важно усвоить такую вещь. Каждый язык требует своего оформления, и должен быть по своему красив в коде, что бы это можно было разобрать. Вы же не будете читать книгу, если она написана справа-налево (Мангаридеров не касается)снизу-вверх да еще и перевернутыми буквами? Ваш код, скорее всего, читать будут, но этому человеку будет крайне неприятно, если вы написали его криво. Статья по оформлению кода на Python’e —

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

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

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

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

Вот да.
Прежде всего — научиться решать задачи. Алгоритмизировать их. А уж потом записать алгоритм на подходящем языке.
А то вроде и «язык знает», а программировать не умеет ни разу. Поток сознания какой-то.

Попробуйте изучить нотную грамоту и синтаксис табулатуры — это самое простое в музыке))

это как-то противоречит словам Urban Nomad?

Мне кажется да. Потому что очевидные вещи для одного человека не очевидны для другого.
Синтаксис в изучении сложен. Например в Go много способов объявления и определения переменных — как объяснить для чего так сделано и зачем вообще оно надо? — риторический вопрос

Синтаксис — это всего лишь способ выражения мысли. Если нет мысли — никакой синтаксис не поможет.

С чего вообще разработка начинается?
Вот есть задача — обработать 40млн записей (отобранных по ряду условий). Ок. Сразу думаем — «40млн в один поток многовато — долго будет, раскидаем на 10 заданий». Это значит что делаем головное задание, которое запускать 10 фоновых заданий-обработчиков. Затем делает выборку того, что подлежит обработке, упаковывает в пакеты (ну, скажем, по 100 элементов) и выкладывает на конвейер. Обработчики берут пакет с конвейера и обрабатывают.
Дальше смотрим — ага, конвейер на это платформе можно реализовать на очереди, пайпе, юникссокете. Дальше смотрим как проще/удобнее.
Затем думаем — ага, пайпы это низкоуровневое, его проще на С/С++ сделать (или готовое что-то подцепить). А вот для бизнес-логики лучше другой язык, более подходящий, использовать.
Дальше больше. Процедуру отбора в головной задаче лучше на скуле сделать (встроенном) — запрос будет готовиться один раз, потом пойдет массовая выборка. А вот внутри обработчика нам нужно какие-то записи из таблицы дергать. Там уже одна таблица — одна запись по уникальному ключу. Тут скуль излишне использовать — он ресурсов много жрет и требует времени на подготовку запроса, это проще и быстрее делать прямым доступом к таблице.
Вот примерно так должен думать разработчик.
Язык тут достаточно фрагментарно присутствует. Больше алгоритмизация.

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

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

Что-то я задумался. Тема конечно очень интересная и ее бы обсудить за кружкой «чая» ))
Наверное синтаксис и алгоритмы, логику, следует изучать совместно, потому как не имеет смысла разрисовывать схемы не имея возможности их тут же описать программно

В целом — да. Просто рисовать алгоритмы, не доводя их до конкретной реализации (хотя бы чтобы посмотреть а как оно реально работает) такое себе занятие 🙂
И может быть на этом этапе (формирования алгоритмического мышления) стоит взять какой-то язык попроще (в мои времена — конец 80-х — начало 90-х) это был Basic. Почти все начинали с него так или иначе. Сначала с интерпретатора, потом появился «псевдокомпилятор» который собирал в одну программу ядро интерпретатора и код, потом уже нормальные компиляторы типа Turbo Basic.
Там был очень простой и понятный синтаксис и не было всех этих заморочек с памятью и прочим.
А вот потом уже возникает неудовлетворенность синтаксисом, хочется новых возможностей и тогда ищем другие языки (кстати, каждый следующий язык дается все проще, за исключением ситуаций со сменой парадигмы, например, перехода от процедурного к функциональному программированию).

Я краем застал только куБайсик)) посему сразу начал с изучения Си.
Потом был Перл, потом пхп и поехало оно всё — согласен, после Си остальные языки изучать проще, потому что они становятся легче.

Я начинал с классического Basic (правда, до этого еще немножко фортрана было, но совсем мало), потом BasCom, TurboBasic. Потом TurboC (еще 1.0, где даже графики не было — писали сами на ассемблере), потом уже С++ появился. Попутно под разные задачи — Clarion, Clipper.
Ну а на старости лет занесло в банк где боевые сервера работают на платформе IBM i, а там вся бизнес-логика на RPG. С/С++ тоже есть, но мы его используем для всяких низкоуровневых вещей. Например, фреймворк для многопоточной обработки больших объемов данных. Сейчас вот параллельно с «проектными» задачами делаю API для работы с UserQueue (есть на IBM i такой системный объект — «очередь») ядро API на С++ (поскольку там все очень низкоуровневое — работа с системными указателями, машинные инструкции и т.п.), поверх него набор программ на RPG для реализации CL команд (CL — командный язык на IBM i, позволяющий в том числе создавать свои команды) плюс набор UDTF и хранимых процедур для возможности работы с очередью посредством SQL — это тоже удобнее на RPG делать.
Проектные задачи, конечно, 99% — RPG. Хотя некоторые вещи удобнее на С/С++. Например, «нормализация строки» — удаление лишних пробелов + приведение к одному регистру + удаление/замена некоторых символов (по списку). Все это можно делать отдельными операциями на RPG, но на С/С++ все это можно реализовать за один проход строки (что быстрее и эффективнее) — на RPG такая реализация будет достаточно корявой.
Плюсом — в IBM i есть «интегрированное языковое окружение», которое позволяет писать один модуль на RPG, другой на С и все это собирать в одну программу. Главное тут правильно интерпретировать типа параметров (что требует некоторого понимания процесса на уровне где передача по ссылке, где по значению, как внутри устроен тот же varchar в RPG которого нет в С/С++ и т.п.).
В общем, с таким анамнезом вопросы синтаксиса конкретного языка как-то на второй план отходят — просто набор правил которые надо запомнить. А на первом плане остается извечное «что делать», а не «как делать».

Да вы, батенька, монстр! =) а говорят в банках всё на Java.
Вообще впервые узнал про RPG. Весьма любопытно.

Банки разные и структур разные. У нас основные сервера (где крутится АБС) на IBM i (IBM PowerS9).
Ну это такая очень специфическая, ни на что не похожая платформа. Объектная ОС, интегрированная БД (DB2), ILE (Integrated Language Environment) с поддержкой языков CL (Command Language — язык команд ОС, но при этом на нем можно писать программы, которые компилируются в «программный объект»), С/С++, RPG, COBOL (у нас не используется).
Но вокруг еще очень много «внешних систем», а там все что угодно может быть — RHEL, SLES, HP-UX, Windows Server.
И да, Java тоже есть, но не на наших серверах. Есть команды разработки и на Java и на C# и мобильная разработка и сайты и SAP и Pega и WBI, но мы работаем на RPG в основном (кроме всего прочего, он еще и SQL позволяет встраивать непосредственно в RPG код, это помимо возможности прямой работы с таблицами — чтение/запись/удаление/изменение/поиск по ключу).
Сервера изолированы от внешнего мира — связь или через IBM MQ или через WebService на отдельной шине.

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

А сложные напрочь отбивают желание заниматься программированием

Тогда яркий квадратный рюкзак.

Источник

Читайте также:  Язык объектно ориентированного программирования java
Оцените статью