Мне 32 года и я бухгалтер. Очень далек от "академического" программирования.
Последние 3 месяца изучал Python, изучал основы ОС, немного Linux.
Не для работы. Для себя. Потому что всегда хотел.
И чем больше я в это погружаюсь, тем больше понимаю, что у меня легкая ментальная эрекция от бэкенда и вообще всего, что как можно ближе к железу... А еще от продумывания алгоритмов...
Поэтому у меня назрело несколько вопросов, которые я пытался нагуглить, но интернет внес только больше сумятицы.
Вопросы:
1. Подходит ли python для бэкенда?
2. Какие языки лучшие в бэкенде, если рассматривать их только, как инструменты?
3. Какие книги или авторы по основам программирования ТОП? Речь не о прикладном программировании с примерами, а о базе и общей теории. Кого почитать из наших или зарубежных авторов?
Zuzzy_Brannigan, кстати, вы зря смеетесь. Программисты, которые реально разбираются в бухгалтерии и знают 1С, но не ограничиваются им - очень востребованная специализация. В том же бэкенде каждому второму магазину нужно взаимодействовать с 1С.
Давно Петцольд и Таненбаум основами программирования стали? То что программы выполняются на железе и ОС еще не говорит о том, что Архитектура ПК Таненбаума стала основами программирования. Если уж про основы программирования, то SICP какой нибудь. Можно Кнута если считать, что алгоритмы основы программирования, но тут нехилая мат. подготовка нужна + SICP практичней будет для современного программиста, т.к. она может научить думать как этот самый программист, Кнут кмк не сможет.
DollyPapper, ну, Петцольд - это не столько для базы, сколько для развеивания иллюзий и вставки мозгов на место.
Насчет Танненбаума, конечно, жестоко - ТС всего лишь не понимает терминов, которые использует, а его такими томищами по хребту...
Adamos, Танненбаума и его Современные опеационные системы я читал. И, кстати, ЭТО ОЧЕНЬ помогло и дало ответы на кучу вопросов и я стал лучше понимать как все работает... вернее, я НАЧАЛ понимать, как все работает. И именно после этой книги я понял, что чем ближе к железу, тем больше мне нравится. Но написание драйверов и ядра ОС я пока точно не потяну. Потому и понял, что пока бэкенд.
Zuzzy_Brannigan, дело в том, что для бэкенда настолько глубокий уровень понимания, как что работает, может не пригодиться ну вообще ни разу. И то время, которое вы тратите на изучение этой глубинной базы, лучше бы потратить на практику - вот опыт на бэкенде реально необходим, и его никакими учебниками не заменишь. Не боитесь толстых учебников - прекрасно, есть тот же Лутц по Питону, которого вы реально найдете, к чему приложить.
Adamos, книжки типа Таненбаума будем честны абсолютны в своей бесполезности. Тому кто уже давно в профессии она ничего интересного не скажет, тот и сам давно разобрался пытаясь понять различные темы, и так по кусочкам воедино все это собрал. А новичку оттуда опять же мало чего вынести, он еще на высокоуровневом языке то не может писать, а ему «томищем по хребту» как этот его ЯВУ под капотом работает. Ну и конечно же Таненбаум это больше научпоп, чем тех.литература, реальные процессоры современности уже на порядок сложнее. С этой точки зрения полезней почитать книжку Hennessy J., Patterson D. "Computer Architecture A Quantitative Approach, ее перевели на русский. Сам я не читал, но говорят там детальней тема процессоров обсуждается, вроде на примере архитектуры arm
DollyPapper, опять-таки можно с абсолютной уверенностью сказать, что бэкендеру с процессором не приходится работать никогда и ни при каких обстоятельствах.
Adamos, мы не пишем web-сервера, но даже в нашем проекте, где сервисы не очень нагруженные, есть несколько микросервисов, производительность кода которых опирается на нюансы работы процессоров. А в большом хайлоаде бэкендерам приходится иметь ввиду железо постоянно.
Сергей Горностаев, ок, добавлю к утверждению про абсолютную уверенность уточнение про 99,9% ;)))
Ну, и про пропасть между сеньором на хайлоаде и "уже три месяца учу Питон" не будем забывать.
Ее бы с этого конца сокращать, а не с того, которого отсюда и не видно.
Такого факультета как backend не существует. Программирование (оно-же кибернетика и информатика и вычислительная техника) это совокупность наук которые вращаются вокруг железа и софта. С железом все понятно. Это всё что вас окружает. С софтом - это в основном языки программирования и ОС.
Backend - это модное слово последнего времени и на него нет точного определения. В некоторых случаях back-end-ом могут называть один компиллятор по отношению к другому.
По вопросам.
1) Да Python прекрасно подходит. Это очень распространённый язык для автоматизации и тестирования и еще много-много чего например в области data-science. Желаю конечно чтобы это был не последний ваш язык.
2) Подходит Java и C#. Их сильная сторона - это строгая типизация и как следствие меньше ошибок рантайма. Это кстати одна из причин по которой большие проекты на Python труднее поддерживать в рабочем состоянии.
3) С книгами - сложнее. Можете начать с Алгоритмов и структур данных Вирта. Там - самый минимум.
Кнута - не читайте. Это уведет надолго в глухую теорию со слабой практической ценностью.
Zuzzy_Brannigan, C++ не советую. Это крайне техничный язык, необходимость в котором часто преувеличена. Вы утонете в трюках которыми часто злоупотребляют C++ разработчики, но не получите достойного профита. Кроме того в языке много неспецифицированного поведения. Это часто осложняет чтение кода.