Стоит ли начинающему программисту учить язык C перед Java?

6

Этот текст написан в Сообществе, в нем сохранены авторский стиль и орфография

Аватар автора

Святозар Островский

Страница автора

Здравствуйте, коллеги!

Ныне работаю в хелпдеске. Желаю перейти в разработку на Java (backend). Сейчас обучаюсь самостоятельно. Встретил мнения людей, в том числе небезызвестного человека по фамилии Григорин, которые утверждают, что сначала необходимо научиться программировать и первым языком лучше выбрать "Си", дескать, с помощью него можно постичь основы и понять работу базовых принципов в программировании и взаимодействия ПК с железом.

В связи с этим у меня два вопроса:

1) Что такое "база" в программировании? Что учить? Это, как полагаю, математика, информатика, алгоритмы и структуры данных? Можете ли Вы посоветовать толковую литературу?

2) Стоит ли всё-таки учить язык "Си" или сразу можно начать с Java? Вообще, цель стать нормальным разработчиком, т.к. хочу выйти в дальнейшем на нормальную з/п и, самое главное, удалёнку, т.к. хочу из Мск переехать жить в деревню и работать оттуда удалённо.

Заранее благодарю за критику, советы и пожелания! Всем удачи!

  • Dominic Toretto1) Да, все перечисленное можно отнести к базе. Математика (высшая) не нужна, а точнее нужны только узкие темы из нее, в частности асимптотическая сложность – это маст хев. Информатика будет полезна, к ней можно отнести структуры данных и алгоритмы. Структуры данных и алгоритмы тоже очень нужны и полезны: массив, стек, очередь, связные списки, сортировки, деревья и графы – нужно иметь понимания квк они работвют их преимущества/недостатки/юзкейсы как минимум. Литература зависит от вашего уровня. Книги Кормена илт Седжвика считаются классикой, но они излишне объемные и написаны математичечким языком. Я бы здесь не гнушался видеоматериалами и лекциями на ютубе. 2) Если цель найти работу, то С учить не стоит, это трата времени. Можно начинать сразу с джавы, но помнить, что сама джава относительно несложная, а вот фреймворков из спринговой экосистемы у нее куча и многие из них надо знать. Поэтому я бы инвестировал время сразу в джаву. На крайний случай, если прямо чувствуете нужду в знаниях С, почитать статьи или видосы об отличиях С/С++ и джавы, чтобы понимать в чем их разница (джава создавалась с философией "упрощенный С++" без прямого управления памятью, т.е. безопаснее), но тут недели на такое верхнеуровневое понимание разницы должно хватить за глаза2
  • SBНе надо начинать с С. Хотите писать на Джаве, учите сразу Джаву. Ничего (критически важного для зарабатывания денег программированием) важного вы не пропустите.1
  • Гусь лапчатыйУ меня первый был Си, единственные плюс - после него радуешься даже Java. Насколько проще жить, не закалебываясь управлением памятью и вообще сколько всего есть в фреймворках, что можно концентрироваться на фичах, а не на борьбу с языком в попытках объяснить, что тебе надо. Структуры данных, основные алгоритмы и O(n) - надо, пригодится не только на собесах, сообенно, если вы в бэкенд. Основы баз данных: реляционные, NoSQL- лучше знать подробно хотя бы про одну реализацию каждого типа. У джависта это может быть и постгря, и оракл и mysql. Из NoSQL скорее столкнетесь с Mongo. Про остальные типы можно просто прочесть. Про брокеров сообщений типа Kafka, RabbitMQ можно просто знать, что они есть и зачем нужны. Попадется в работе, изучите подробно.1