LINUX.ORG.RU

Наставьте восьмиклассника на путь программиста под Linux

 , ,


2

2

Учусь в 8 классе на домашнем обучении. Не так давно начали изучать информатику. Я хорошо осознал, что мне нравится информатика и очень привлекает программирование. Предметная область, в которой я себя вижу: вычислительные сети, сетевая и серверная инфраструктура, высоконагруженное серверное ПО. Скорее всего, я не буду уходить после 9 класса из школы, а продолжу учиться до конца 11 класса. Планирую поступать в ВУЗ на бюджет, поэтому сейчас я не знаю, на какую именно специальность и в какой ВУЗ я пройду.

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

Подскажите, пожалуйста, что стоит изменить в моём плане с учётом моей предметной области? Хотелось бы, конечно, в первую очередь скорректировать практическую часть. Далее идёт набросок моего плана.

Информатика (больше теория):

  • системы счисления, единицы измерения инф., сигналы, частоты, дискретность и непрерывность;
  • архитектура ПК, работа процессора и оперативной памяти;
  • вычислительные сети и сетевая архитектура, понятие сетевых протоколов;
  • алгебра логики и логические операции;
  • алгоритмика и типы данных.

Информатика (больше практика):

  • построение диаграмм и блок-схем в графическом редакторе yEd, решение задач с алгоритмами;
  • работа в среде программирования КуМир;
  • работа в среде программирования Free Pascal;
  • языки разметки HTML и TeX: создание статичного персонального сайта на HTML, вёрстка документов в системе LaTeX в программе TeXstudio;
  • регулярные выражения и работа с текстом на естественном языке;
  • базы данных и системы управления базами данных (СУБД), работа с СУБД SQLite в программе SQLiteStudio.

Введение в программирование:

  • трёхтомный учебник «Программирование: введение в профессию» (А. В. Столяров);
  • учебник «Free Pascal и Lazarus. Учебник по программированию» (Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер);
  • написание простых программ на Object Pascal (типа калькулятора, файлового менеджера, возможно, простейшего софта для защиты от DoS-атак на базе iptables и ipset);
  • учебник «Теория систем и системный анализ» (В. Н. Волкова, А. А. Денисов).

Математика:

  • школьная программа алгебры 7-11 кл.;
  • «Основы математического анализа (Г. М. Фихтенгольц)» + задачник Б. П. Демидовича;
  • «Дискретная математика. Учебное пособие» (В. Е. Алексеев).

Алгоритмы и структуры данных:

  • «Алгоритмы. Вводный курс» (Т. Кормен);
  • «Алгоритмы, введение в разработку и анализ» (А. В. Левитин).

Основы программирования в выбранной предметной области:

  • «Язык программирования C. Лекции и упражнения» (С. Прата);
  • «TCP/IP Illustrated: The Protocols» (У. Стивенс);
  • «Understanding Linux Network Internals» (O'Reilly);
  • «Unix Network Programming: The Sockets Networking Api» (У. Стивенс);
  • официальное руководство Cisco по подготовке к сертификационным экзаменам CCENT/CCNA.

Также я составил список привычек, которые мне стоит сформировать:

«1. Приучайся описывать математически всё, что видишь вокруг себя: чашку кофе на завтрак, тарелку супа на обед, облака в небе и т. д.

2. Изучай вширь всё, до чего дотягиваешься. Не понял, что написано — разбирайся, пока не поймешь. Уметь программировать — это пол дела. Надо понимать, как запускать твой код, где он будет работать и как будет взаимодействовать с другими системами".

3. Пиши код! Каждый день пиши! Не так важно что: вытаскивай данные с какого-нибудь API, пиши консольные утилиты. Собирай какие-нибудь данные и клади их в БД. Не важно, насколько это все будет наивным, практический опыт от задумки до реализации надо проходить 10-20-100 раз, пока не научишься видеть решения".

4. Читай чужой код, смотри, как он устроен, чем лучше твоего, анализируй. И читай книжки по хорошим практикам программирования (начиная с пресловутого Боба Мартина).

5. Не игнорируй инфраструктуру. Эти вот модные докеры, которые мамонты на ЛОРе не любят, они неспроста. Написал программу — подумай какими способами ее можно безболезненно развернуть на другой машине» ( paddlewan).

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



Последнее исправление: cybbit (всего исправлений: 4)
Ответ на: комментарий от cybbit

Я думал, что нейросети — инструмент для программиста, а не его замена.

Сей вьюнош мудр не по годам. Хотя лично мне думается, что и как инструмент для программиста нейросети – ни в красную армию. Разве что как отвечалка на вопросы на замену SO, но на что она смогла бы ответить, если бы этого самого SO не было? Пусть попробует ответить на это.

В любом случае я иду в программисты не ради денег, а потому что мне это нравится.

Наши люди везде!!! Но деньги тоже бывают нелишними. ;)

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)

Общая рекомендация: если ты решил идти в вышку, ты слишком распыляешься на ерунду, или слишком рано обращаешь внимание на некоторые вещи, например:

языки разметки HTML и TeX: создание статичного персонального сайта на HTML, вёрстка документов в системе LaTeX в программе TeXstudio;

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

официальное руководство Cisco по подготовке к сертификационным экзаменам CCENT/CCNA.

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

построение диаграмм и блок-схем в графическом редакторе yEd, решение задач с алгоритмами;

да вообще пофиг, где их рисовать, хоть от руки на бумаге

работа с СУБД SQLite в программе SQLiteStudio.

Не, ну для лабы или там курсача можно иметь на примете конкретную СУБД, хоть SQLite. Но сначала лучше разобраться с теорией и вообще какие СУБД бывают, плюсы минусы, каков математический аппарат о проч.

простейшего софта для защиты от DoS-атак на базе iptables и ipset

да ну его нафиг пока! Я просто не очень понимаю, где найти свободное время для вот этой всей практической мастурбации, когда у тебя матан, дискретка, алгоритмы, сети, которыми можно забить всё время до отказа, а ещё есть такая хрень как личная жизнь, (физ-)культура и всё такое, на которые лучше в универские годы не забивать, иначе потом будет худо. В нормальном ВУЗе у тебя будет достаточно лаб и курсачей, там хватит практики. А вот если в ранние годы забьешь голову практикой, потом теорию уже очень сложно будет наверстать.

«Understanding Linux Network Internals» (O’Reilly);

если уж так хочется в ядро лезть, - хотя это лучше делать если там какой-то курсач или вообще дипломная, - лучше начать с общих архитектурных вопросов ядра, как писать модули и вот эта база. А за эти 3-5 лет до первого курсача ты 10 раз передумаешь возможные интересующие тебя темы.

Изучай вширь всё, до чего дотягиваешься. Не понял, что написано — разбирайся, пока не поймешь. Уметь программировать — это пол дела. Надо понимать, как запускать твой код, где он будет работать и как будет взаимодействовать с другими системами".

Есть два направления движения в обучении в вышке: вширь и вглубь. Конечно, общий кругозор необходим (на то она и вышка), но всё равно будешь на чём-то одном специализироваться (изучение вглубь). Когда ты будешь учиться в универе, у тебя может появиться соблазн как можно больше разных тем покрыть. Это хорошо, но есть опасность не оставить достаточно времени для дипломной работы и изучения конкретной темы вглубь. Поэтому с т.з. продуктивности дипломной работы имеет смысл наоборот специализироваться как можно раньше. Такова диалектика вышки. Не существует готовых рецептов, как оптимально помирить эти два измерения, и поэтому в действие вступают другие факторы, которые не всегда зависят от твоих хотелок и образа идеала. Например, твоя специализация/кафедра тебе нравятся, но профессор, с которым можно делать диплом, и который по идее должен тебе помогать, специализируется не на той теме, которая тебе на 100% интересна. Т.е. ты либо будешь подстраивать свои хотелки под специализацию доступного под рукой профессора, либо будешь менять кафедру/ВУЗ, что как бы геморройно. Либо у тебя должен быть технический руководитель с какого-нибудь предприятия/НИИ, потому что серьёзную дипломную в одиночку пилить довольно уныло и жёстко.

Эти вот модные докеры, которые мамонты на ЛОРе не любят, они неспроста.

Нет, почему же?! Очень даже мы любим докер. Просто он нужен ради технологичности процесса, которая при обучении в вышке нафиг не нужна. Разве что если тема дипломной в области контейнеризации…

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 2)

Попроси родителей (если есть возможность) - помочь с поступлением в ЛКШ. Олимпиадное программирование поможет закрепить основные алгоритмы. А в школе найдешь множество таких же заинтересованных ребят, с которыми можно будет поболтать о том, о сём. Контакты полезные заведёшь. Можно будет узнать, что в твоём году поступления из олимпиад будет помогать с бюджетным высшим.

https://lksh.ru/

Олимпиады помогут поступить на бюджет.

qa
()
Последнее исправление: qa (всего исправлений: 1)
Ответ на: комментарий от qa

А программистам разве нужны другие ребята поболтать?! :)

Может, им сразу нейронные сети в товарищи и спутники жизни?!

P.S. Иногда вся сфера кажется издёвкой над человеком или самоиронией.

AnonymUser
()
Последнее исправление: AnonymUser (всего исправлений: 2)
Ответ на: комментарий от cybbit

Напишите кто-нибудь парню про наркотики в сфере, псих. клинику, поехавшую кукушку, про асоциализацию и т.д., про контроль спецслужбами, уныние, сатанизм, суицид и все остальое. А то сфера и правда после рекламы кажется в розовых тонах.

Короче, про все интеллекутуальное и духовное уродство, которое порождено этой сферой. А то сказок вокруг очень много.

AnonymUser
()
Последнее исправление: AnonymUser (всего исправлений: 1)

С таким списком/закосом ты совершенно не найдёшь времени на нормальный спорт/девушек.

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

anonymous
()
Ответ на: комментарий от Zhbert

А вдруг он щас

Ставь тэг «8 класс в 2024-ом».
Щас ничего, а вот через три года на ЛОРе ТС будет рассказывать, что у них в отделе джуны оборзели и как издато было в совецком союзе.

frob ★★★★★
()
Ответ на: комментарий от AnonymUser

Напишите кто-нибудь парню про наркотики в сфере, псих. клинику, поехавшую кукушку,

О, кстати, это дело! ТС, смотри ОБЯЗАТЕЛЬНО, минимум до середины: https://www.youtube.com/watch?v=K6oZuB8_dU8

И обрати внимание: под матюками он прячет безэмоциональность.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)

Ставь себе интересные цели. Учиться чему-либо просто для того, чтобы «хорошо уметь», — это плохая мотивация в долгой перспективе. Например, ты упомянул личную страничку. Это хорошо, потому что есть осязаемая интересная цель. Вот по каждому направлению у тебя должна быть интересная цель. Не обязательно их ставить на годы вперёд. Просто в каждый момент времени ты должен примерно представлять, зачем тебе это надо, кроме «чтобы выполнить план». Ответ «затем что интересно, вот зачем» принимается. Раз пишешь, что интересна сеть и базы данных, то и придумай себе какой-нибудь pet-проект с сетью и данными. И читай те книжки, которые помогут тебе понять, как оно снизу доверху должно работать.

Читать лучше классиков. В этом плане список у тебя хороший для начала, кроме Столярова. А дальше видно будет.

Также читать лучше на английском. Не стоит недооценивать английский для профессии. Практически вся нормальная документация и большая часть общения идёт на английском. Те же комментарии, большая часть выдачи гугла. Не откладывай на потом.

Паскаль выбрось. Я сам с него начинал. Но тогда совет можно было спросить только у учителя, который знал только паскаль. А теперь и писателей на паскале сильно меньше тех же сишников, и информации по паскалю в интернете раз два и обчёлся, особенно актуальной. Бери что-нибудь из мейнстримовых языков, что в твоей предметной области используется.

Уделяй особое внимание алгоритмам и структурам данных. Это гораздо важнее конкретного языка программирования, особенно на раннем этапе, как у тебя. Грубо говоря, язык программирования это лопата или отвёртка, а алгоритмы и структуры данных — это понимание, что с ними делать и как. Если это понимание есть, то ты инженер. А если ты только зазубрил, куда тыкать отвёрткой конкретной модели, то ты кодер за три копейки.

Следи за активными в интересующей тебя области опенсорсными проектами. Зарегистрируйся на их форумах, подпишись на мейллисты, добавься в чаты и т.д.. Читай, какие вопросы обсуждают опытные люди в теме. Смотри, какой код они пишут. Да, поначалу 95% будет не понятно, особенно в коде. Но постепенно слова станут понятнее, а со свеменем и код. В общем, держи руку на пульсе, не книжками едиными.

Ну и не стесняйся задавать вопросы здесь и в других местах. Как видишь по реакциям на этот твой пост, на адекватные вопросы адекватная реакция.

d ★★★★
()
Ответ на: комментарий от dimgel

Ещё в сфере иногда попадаются очень горделивые люди с тайными желаниями управлять всеми миром и получать деньги, не работая, т.е. доброго «пожаловать в клуб интеллектуальных и моральных уродов»!

AnonymUser
()
Ответ на: комментарий от Andreezy

Я в 8 классе бил палкой крапиву

Примерно в том классе у меня уже была корочка оператора ЭВМ от московского колледжа. Получил её дистанционно. Это были ещё 90-е годы, да. Чтобы отправлять ответы приходилось идти ногами в местное отделение связи. Материалы получал по почте на бумаге. Это сейчас можно всё это получать и отправлять в электронном виде не выходя из дома.

saahriktu ★★★★★
()
Ответ на: комментарий от dimgel

Так что на моё ИМХО, тратить время на какие бы то ни было национально-специфические языки – бессмысленная трата времени.

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

Но, в принципе на один-два вечера для развлечения сойдёт.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от sshestov

У меня сын учится в 8-м классе. Вот не верю в это всё. Ни в составленный план, ни в планы на будущее, ни в найденный перечень книг

Вот Вы сейчас взяли и подложили свинью собственному сыну, если ещё не поняли. Потому, что люди сейчас этот пассаж будут читать и думать «ага, он про всех детей по своему сыну думает».

советую записаться в спортивную секцию 3 раза в неделю. Лучше 5, если пойдет.

5 — это если человек выбрал спорт в качестве основного дела жизни (и тогда бы ТС пошёл не на ЛОР, а в другое место). Если же спорт для здоровья, то даже 3 уже серьёзная нагрузка, нормальная, но серьёзная. В школах и так нагрузка большая, старшеклассники мучаются подготовкой ко всяким ЕГЭ и ОГЭ. Самообразованием можно заниматься в собственном темпе, а вот спортивная секция темп диктует. Если человек 2-3 раза в неделю ходит в бассейн, а остальные дни тренирует мозг — это вполне нормально, я считаю.

Насчет программы университета, пусть даже по ограниченному набору предметов, вам пока-что беспокоиться не зачем.

Я перед институтом хорошо так позанимался математикой и физикой. Не только сам, там подготовительные курсы были. Правда, это не 8 класс был, а уже 10. И знаете, ни разу не пожалел, как минимум первый курс это мне существенно облегчило. На младшекурсников тоже много всего сразу наваливается, если есть возможность это облегчить — лучше этим не пренебрегать.

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

P.S. Впрочем, Фихтенгольца с Денисовым действительно можно до вуза оставить, если нет конкретного жгучего интереса именно по этим предметам.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)

вычислительные сети, сетевая и серверная инфраструктура, высоконагруженное серверное ПО

архитектура ПК

Тогда уж архитектура ВК?

не буду уходить после 9 класса из школы, а продолжу учиться до конца 11 класса. Планирую поступать в ВУЗ на бюджет

Т.е. всего три года осталось на подготовку к поступлению?

vM ★★
()

Эти вот модные докеры, которые мамонты на ЛОРе не любят,

Как верно и точно сказано!
Вот помню в 1812 после Бородино говорю Кутузову «Зря Вы ЛОР игнорируете. На нём Вам дали бы весьма ценные советы по руководству войсками».

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 1)

Если бы я мог дать совет себе в прошлое, когда я был восьмиклассником, я бы сказал это:

Лучше максимально ботать математику и информатику школьные, плюс материалы для подготовки к олимпиадам. И, собственно, участвовать во всеросах и олимпиадах топовых вузов, стараться брать призовые места.

А когда поступишь в топовый вуз, на третьем курсе можешь начинать заниматься по своему списку.

the_real_kinik ★★
()
Ответ на: комментарий от anonymous

дочка учится в восьмом классе - ходит на кружок компьютерной грамотности, где их учат с майкрософтофским офисом работать и в фотошопе рисовать

Вы, поди, барыгам из этого кружка ещё и деньги заплатили? Сочувствую.

В то время как в школьном учебнике информатики за 6 класс один и тот же материал подаётся для винды и линукса на соседних страницах (MSO vs LO, MS Paint vs KolourPaint). Там же и КуМир с черепашьей графикой и не только.

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

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

в 8 классе я параллельно с программированием ходил в химический кружок

Что в этом кружке было из оборудования и реактивов и каких результатов можно было добиться? Какая от химии практическая польза в малых масштабах?

Shushundr ★★★★
()

Приучайся описывать математически всё, что видишь вокруг себя: чашку кофе на завтрак, тарелку супа на обед, облака в небе и т. д.

Распорядок дня опиши математически.

Подъём в армии по уставу в 6:00 отбой в 22:00. Учти, что питаться надо три или четыре раза в день (желательно через равные интервалы), спать надо не менее 8 часов в сутки. При интенсивных нагрузках полезен часовой послеобеденный сон, работать за компьютером (взрослым) нельзя более 6.5 часов (за 8 часов надо делать 90 минут перерывов для отдыха глаз).

Алгебра отличается от арифметики тем, что там вводятся буквы-переменные с именами вместо конкретных чисел.

Наделай переменных. Сформулируй это всё в виде задачи линейной оптимизации, сделай так, чтобы границы интервалов выровнялись на 5 минут.

Полученное приложение оформи в виде Java-программы для Android смартфона, добавь таймеры, горны и кричалки. Полученные от продажи деньги потрать на вывод стартапа на биржу.

Shushundr ★★★★
()
Последнее исправление: Shushundr (всего исправлений: 3)

на домашнем обучении

А что случилось? Без человека который разбирается в своей области (учителя) будет трудно. Проблема в том, что есть куча книг и учебников по конкретном языкам и технологиям, но мало книг по программированию вообще, тем более для школьного возраста. И содержание быстро устаревает. Отличная книжка «Папа, мама я и микрокалькулятор» сегодня безвозвратно устарела. Неплохой учебник 98года Бондарева «Основы программирования» ещё как-то можно применять (там паскаль), но уже попахивает мертвечиной. Было бы здорово заиметь подобного рода книжку на основе javascript или хотя бы питона (хрен с ним), но я таких не знаю.

набросок моего плана

Всё это хорошо, но немного не для школьника. Такой материал (по объёму и глубине) подойдёт для изучения на 1-2 курса ВУЗа. Можешь посмотреть уже упомянутый учебник Бондарева, или Sammie Bae «JavaScript Data Structures and Algorithms» (ненавязчиво намекаю, что для актуальной информации нужно знать английский). Поразбирайся с практикой программирования на js в браузере и ноде (тулчейн, git, деплой в облака). Этого хватит на пару лет с лихвой, учитывая что у тебя есть и другие предметы и вообще жизнь.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 3)

«Язык программирования C. Лекции и упражнения» (С. Прата);

Листинг 4.2 . Программа p r a i s e l . с

/* praisel.c -- использует различные представления строк */
#include <stdio.h>
#define PRAISE "Вы - выдающаяся личность."
int main(void)
( char name [40] ;
  printf("KaK вас зовут? ") ;
  scanf ("%s", name) ; // ./praisel <<< 'АЗовут-тоМеняВсеПочему-тоЛакшминараяномСубраманиамом.'
  printf ("Здравствуйте, %s. %s\n", name, PRAISE);
  return 0;
}

Можно такое показывать без комментариев начинающим, пусть даже не в 2013, а в 1984 году?

vM ★★
()

Трэд не читал.

Юноше, обдумывающему свое житьё, раз попросил совета, который на самом деле не нужен, пожалуйста.

Учиться лучше всего вещам фундаментальным, а не сиюминутно-прикладным. Выбери математику, физику, химию, биологию, медицину.

В этих областях место программированию тоже есть.

Программист, пишущий код для реализации чужих хотелок вызывает сочувствие.

anonymous
()
Ответ на: комментарий от vM

Это чтобы преодолеть культурный шок для перекатывающихся со скриптоты.

Вообще во многих подобных книжках типа «Изучаем язык X» есть вводные главы как бы для начинающих. Но на самом деле там всё пролетают галопом и по факту это непригодно как самоучитель для человека, который никогда не программировал.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Zhbert

В том числе и в блокноте, но у меня тогда был уже неограниченный доступ в класс с Корветами.

PS: или ты про какой блокнот?

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

в местном ВУЗе нельзя было напроситься? У нас можно было напроситься, во всяком случае с 10 класса.

Мне до 10 класса тогда было ещё долго ждать. А компьютеробесие в школах ещё не началось. У старшей сестры был факультатив, который она возненавидела. Не помню, сохранились ли распечатки, или всё было в тетрадке.

В ВУЗах, конечно, были уже ЕС ЭВМ. С ПЛ/1, ФОРТРАНом. Там, где учились экономисты и бухгалтера, ещё и русский КОБОЛ.

В некоторых лабораториях были свои СМ, но для них АЛГОЛ был ещё более теоретическим языком, чем для IBM/360. Для малых машин до Паскаля теоретически был АЛГАМС, но это не то https://pdf.standartgost.ru/catalog/Data2/1/4294832/4294832107.pdf В работе я ни одной реализации АЛГАМСа не видел.

Одна из первых книг, в которой было что-то о программировании, была «Занимательная алгебра» Перельмана, не 1949 года издание, а более позднее

https://fireras.su/biblio/wp-content/uploads/8573.pdf#page=3

«Машины для решения уравнений» и то, чем стал рассказ «Мыслительные машины» из первой главы.

vM ★★
()
Последнее исправление: vM (всего исправлений: 2)
Ответ на: комментарий от vM

А компьютеробесие в школах ещё не началось

Мне немножко повезло, что я учился в школе, где были энтузиасты. Они выбили класс и вели кроме школьной программы ещё кружок. А так да, в остальных школах программировали на доске и катались к нам на практические занятия раз в четверть.

no-such-file ★★★★★
()