Рассказ про прогу для младшекуров. ПРОЖНЫЕ РАССКАЗЫ

Тут я на правах старого умного перд... старшекурсника расскажу своё видение насчёт проги. Мой путь в проге, разницу в Си и Питоне и тыры-пыры

Автор, насколько я знаю, ты не супер-спец в проге, а всего лишь немного лучше среднего. Почему ты решил нам о ней рассказать в "Прожных рассказах"?
У меня, как у читателя, думаю, часто была ситуация, когда лектор говорит "да тут всё очевидно, изёвая теория", а вы даже не понимаете, что происходит. С айти так же: на Ютубе есть 100500 гайдов, где бодрый молодой мужской голос человека, поднимавшего сервера ещё в 10 лет и написавший ChatGPT за 5 лет до того, как это сделали Microsoft, вам рассказывает, насколько круто айти.
Между тем айти - это не только высокооплачиваемо, это и ещё и очень сложно и больно. В этих "прожных" рассказах я хотел бы без конкретных гайдов дать ответы на многие вопросы, которые возникали у меня на младших курсах и возникают, возможно, у вас.
Ответы на вопросы условных младшекурсников:
Питон или С?
Виндоус или Линукс?
ООП - Объектно-Ориентированное Програмиирование
Зачем нужна командная строка, она же терминал?
гайд по Латеху
курс:
Питон или С?
Виндоус или Линукс?
ООП - Объектно-Ориентированное Програмиирование
Зачем нужна командная строка, она же терминал?
гайд по Гитхабу

Стоит ли мне учиться проге?
Навряд ли могу сказать, стоит ли ТЕБЕ учиться проге. Но скажу, что во многих IT-компаниях помимо разработки есть должность аналитика. Погуглите, например, Glowbyte или Avenix. Это консалтинговые компании, в них много IT и разработки. Но много и аналитики, где надо думать, а не писать код.
Для кого-то проще писать код по образцу и получать удовольствие от "оно работает", а для кого-то общение с компьютером - это скука смертная, зато смекалочка русская работает что надо.
Но вот только спрос на разрабов колоссальный и колоссально также предложение. Инет просто завален вакансиями разрабов и ещё в большей степени - курсами "стань разработчиком!". Аналитикам в этом плане сложнее, но они умные ребята и понимают, как пробиваться :) Я сам скорее аналитик.

Как мне учиться проге?
Навряд ли могу сказать, как ТЕБЕ учиться проге. Расскажу про свой жизненный опыт. Он показал, что учить прогу можно только по тем задачам, которые имеют для тебя практический интерес. Типа "на внешней работе попросили написать такой-то парсер для такого-то".
А все курсы - от бесплатных МФК до платных по проге - не то что бесполезны, но подходят не всем. Потому что это рутина, цель которой - сдать непонятно что непонятно кому только для отчётности.
Помнится, летом после 1 курса я решил выучить нейронки (тогда ещё С). Посмотрел, что-то даже пописал, а потом забросил.
А следующим летом, т.е. после 2 курса я решил выучить питон. Выучил только то, что мне нужно - построение графиков, а остальное не вышло. Нет цели - нет прогресса. А учить прогу ради проги - путь вникуда.
А вот сейчас (8-й семестр) мне потребовалось написать парсер и я узнал много нового и интересного.
А перед этим пришлось чутка выучить html, чтобы создать этот сайт.
Так что сначала цель, а потом знания. Правда, нужна база. Но мне повезло с препом по проге на 1-м курсе. Дергачёв Александр Александрович лучший!

А где мне кодить? В каких средах программирования?
На 1-2 курсах удобно пользоваться онлайн-компилятором. Например,
GDB-компилятором. которым пользовался я сам/
Однако на онлайн-компиляторе далеко не уедешь. Простые программы там писать можно, но если вам нужно написать большой проект или использовать все возможности вашего ПК, считая какой-то процесс - стоит считать компиляторами без Интернета.
На всякий случай: компилятор и интерпретатор - программы, которые переводят ваш код на язык, понятный машине. Между компиляторами и интерпретаторами тоже есть разница
Для С рекомендуются скачать CodeBlocks и прогать там.
Для Питона - PyCharm.
Также не могу не упомянуть совсем уж ульту - Visual Studio Code, где можно писать код на всевозможных языках. Обращаю внимание читателя, что есть Visual Studio (с вот таким фиолетовым значком)
А есть Visual Studio Code с синим значком:
Так вот, вам нужна именно Visual Studio Code, с голубым значком!

ООП – это специфика именно С++?
Нет, ООП есть и на Питоне. Там оно даже понятней. Разберём, как оно устроено и зачем оно нужно.
Питон, как известно, славится своими библиотеками:
Matplotlib (сокращённо plt) позволяет строить графики
Numpy (сокращённо np) упрощает работу с массивами
Pandas (сокращённо pd или df) упрощает работу с датафреймами – таблицами.

Есть два типа программ
А) для себя (и, может быть, научника)
Б) для других
И к ним совершенно разные требования.
Разработка - это Вк, Гугл, Яндекс и все-все-все. Их цель - написать приложение, игру для людей. На первом плане - удобство пользования.
Вы будете пользоваться чужим кодом, а другие - вашим. Поэтому фен-шуй - форматирование, удаление указателей - обязателен.
Тут же объектно-ориентированное программирование. И ещё куча всего на свете. Коммиты, миграции, пуши, мерджи - это всё туда же.
Но есть и програамы типа А). Счётная прога - это научка. На первом месте - быстродействие программы любой ценой.
Скорее всего, вашим кодом никто пользоваться не будет, кроме вас и вашего научника. Поэтому фен-шуй идёт нафиг. Лишь бы работало.
В программах типа А) НИКОГДА НЕ ЗАНИМАЙТЕСЬ ОЧИЩЕНИЕМ ДИНАМИЧЕСКОЙ ПАМЯТИ. Вот эти вот free(…), деструкторы классов и прочие.
Многие преподы говорят: «да как вы смеете, динамическая память забьётся!» Да не забьётся она, динамическая память очищается автоматически после завершения работы программы.
Free нужны, если вы планируете выложить код куда-нибудь, чтобы вашим классом пользовались. Или вы, закончив ФФ, устроились в разработку и пишите классы. Вот там да, free(…) нужен – а то найдётся пользователь, который запихнёт ваш класс в 10 циклов и будет удивляться Segmentaion fault или Stack Overflown.
Преподаватели, требующие free, делают это с единственной целью: убедиться, что вы знаете о существовании free и деструкторов.
Единственное, зачем нужно следить за программами типа а) – за закрытием файлов (.txt и других), если вы с ними работаете. Потому что не закрыли файл – там не сохранились данные.

ООП в научке не используется?
Лично мне не доводилось. А вот моему одногруппнику из Дубны - приходилось. Он занимается обработкой экспериментальных данных с детекторов, и для он пишет методы. Ну и это оформляет красиво в виде класса, чтобы этим могли пользоваться его коллеги, которым данные также приходят.