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)
Ответ на: комментарий от realbarmaley

Кружок, кружку рознь. Есть кружки где ребятенок может делать любую техническую дичь которая ему нравится, главное чтоб без членовредительства и пожара в кружке :)

Да и в кружках можно попробовать командную работу, когда над программной частью дичи работает тот кому нравится программировать, над электронной частью тот кому нравится паять, а пилит и гайки крутит тот у кого руки не крюки. В итоге все довольны, даже преподаватель так как техническая дичь на технических школьных конкурсах/конференциях обычно всем нравится :)

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

hobbit посоветовал одному пользователю этого сайта изучить алгоритмику с помощью КуМира. Он же советовал и книги Столярова, а также Pascal.

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

Кроме того, пользоваться им без IDE невозможно, в отличии от 99% всех других языках в файлах кумира текст программы хранится не как есть, а в виде какого-то кода, где часть служебная и не отображается для пользователя.

В общем поиграться можно, но смысла изучать что-то с помощью КуМира крайне мало. Начни лучше сразу с Pascal, он имеет все те же возможности, но ключевые слова сразу на английском языке, как везде, программы можно писать в текстовом редакторе и компилировать/запускать из консоли и как минимум поначалу так и следует делать. Хотя и потом так можно и продолжить.

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

Я бы Pascal заменил на С++

Не знаю. Если так резко, можно научиться г..кодить. Или на C# для начала (он строже плюсов, многое из поздних паскалей).

а SQLite на PostgreSQL.

Горячо поддерживаю.

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

В 2024? Думаю, не лучше. Вы в Плюсах пока до ООП доползете, как как Си и выучите, только «более лучший», современный и безопасный Си.

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

Мне плюсы не нужны. Для своих задач C89 хватает 3 библиотек.

А для остального есть пхп.

Да и вообще мои пожелания автору осмотреться, пощупать и подумать, а надо ли все это ему. А то реклама сферы и сама сфера - не одно и то же.

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

Говорят, из-за ошибки программиста ракета Ангара-А5 на Восточном уже в третий раз будет пытаться взлететь. Вам нужна такая ответственность? За убытки могут строго наказать. Вплоть до… плюнуть в морду.

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

Я за вас очень рад и наверное даже завидую в каком-то смысле, но тсу учить Си или ПХП не посоветовал бы.

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

Я тоже себе завидую, что сделал упор на гуманитарную часть и много чего избежал. Слава богу.

Но каждому свое. У все свой путь.

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

Все талантливые уехали работать в поддержку Red Hat, остались только те, кого не взяли в поддержку. Будем надеяться, что раза с десятого взлетит и не взорвется. :(

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

Кроме плана (программы) важен еще и контроль. Муть-не муть зависит от программы и места. В Московском дворце пионеров очень неплохие кружки, про Ленинградский не знаю ничего.

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

Php я бы и сам советовал с осторожностью.

А вот C ansi вполне на мой личный взгляд подходит для обучения или лучше сказать знакомоства. Типа понять логику, циклы. Простые базовые конструкции. Со строками чуток поработать. Потом подумать… Плотно.

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

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

Что касается Таненбаума и некоторых других подобных книжек - это классика. Её желательно полистать. Тем более в эпоху PDF-ок это не накладно. Оглавление почитать, первые главы, заинтересовавшие главы. Ну углубляется и углубляется, пропусти мимо ушей это углубление.

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

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

Ну я в ВУЗе писал на С++ под Xlib. На 3 курсе. Спустя 15 лет пишу манифесты для кубера и восстанавливаю пролюбленную базу из ошмётков на жаве. Первая работа это скорей где тебя возьмут, если ты не суперзвезда (почему я про олимпиаду и написал - если вдруг получиться вылезти на уровень мира или хотя бы страны, там тебя сразу заметят). А потом уже как-то выведет кривая куда-то, где более-менее стабилизуешься.

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

раст вместо кумира? Месье знает толк в обучении.

Почему «вместо»? Полагаю что неплохо в образовательных целях иметь представление что это и за чем это не нужно. Впрочем может я ошибаюсь, так как сам мало что про rust знаю.

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

Мне бы не хотелось спорить, просто мне после Си очень сложно было переучиваться. С Пайтоном до сих пор не дружу (и очень об этом жалею!). Может это индивидуальное, хз.

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

К программированию можно подходить снизу или сверху.

Снизу это изучая с основ.

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

Сейчас популярен второй подход. Хотя я сторонник первого.

Изучать Rust одним из первых языков это безумие.

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

С другой стороны Rust, если говорить объективно, не востребован. Да, это перспективный язык, да, если хорошо поискать, можно какой-нибудь криптоскам найти. Да и там обычно нужны нормальные спецы с 20-летним С++ бэкграундом, а не новички. Поэтому если уж если кидать человека в реку, то хотя бы на питоне.

Будущее Rust также туманно. Да, это хайповый язык, но объективно говоря не похоже, чтобы на него прям все перекатывались. Ruby в своё время тоже хайповым был, а сейчас про него и не услышишь особо, где-то там в своей нише скрипит потихоньку и завистливо глядит на питона. Вполне может быть, что потихоньку Rust спустится с горы и всех покроет, но я бы на это сто баксов не поставил.

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

Надо сделать поправку на то, что и кому в реальности нужно. Мне от языков был нужен минимум. Искать, составлять и проверять работу мат.алгоритмов для любых n ради спортивного интереса - для этого хватает элементарного C. Можно консольное что-то написать. Хотя в основном всё написано до нас.

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

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

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

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

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

Танцуй, пока молодой.

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

В каком смысле - это правильное, нормальное детство.

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

6. Начинай присматривать, куда пойти работать. Системное сетевой программирование - очень узкая специализация.

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

Комбинаторика может пригодится, а может и нет. Хотя, конечно, общее представление нужно иметь.

В чистом виде она практически - чистое искусство, особенно переборная.

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

Не знаю советовали уже такое или нет, но, пожалуйста, прислушайся к моим словам.
Математика, алгоритмы, программирование, инфраструктура и т.д. - это все безусловно круто и полезно, но прошу тебя, не забывай про социализацию. Мы живем в мире, где все вышеперечисленное является лишь малой частью намного бОльшей системы, где тебе приходится коммуницировать с людьми из других сфер и социальных слоев. Поэтому очень важно научиться себя правильно преподносить и «продавать». Как бы это не было печально, но без должного уровня социализации твои технические навыки могут вообще ничего не стоить. Да и личную жизнь тоже придется обустраивать, чтобы быть счастливым, а там без навыков коммуникации также не обойтись. Редкий слушатель(особенно среди женщин) будет заинтересован в разговоре о компиляторах, сложности алгоритмов или криптографии.
Если ты хакер(в изначальном значении слова), то будь хакером во всем: в железе, в софте, в обществе, пробивай себе путь к успеху.

eyrell
()

Купи zx spectrum и напиши игру на АСМе, пока в школе. после иди в институт на специальность на которой будут учить программированию. [br] учить нужно основы, чтобы во всем остальном можно было разобраться.[br]

и жить вещами кроме программирования не забывай

Vlad-76 ★★★★
()

я бы ещё посоветовал обзавестись малинкой.

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

и всякие IDE в виде граф.программирования (сложить программу из блоков) там сразу есть. И помниться, там ещё и Wolfram, который в учёбе точно поможет.

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

Может и хорошая но точно не для программиста. Для программиста - написать клон PostgreSQL.

ТС упомянул, что хочет в высоконагруженное серверное ПО. А там как раз из-за угла выглядывает BigData и прочие кластеры. Где противно-высокая доля сисадминства. Вот нужно тебе пнуть кафку – дык программно ты взял её и пнул, раз плюнуть. А чтобы запустить и проверить, что оно работает – за@#$шься всё это устанавливать и настраивать.

На этом фоне, поднять постгрес – вообще ни о чём, это крайне неприхотливая зверушка, отлично работающая с дефолтными настройками. Вот и пущай сразу привыкает к нормальному серверному софту, потому как SQLite таковым считать вообще говоря нельзя. Тем более что постгрес – по крайней мере на текущий момент в РФ – стандарт де факто среди SQL.

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

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

Вот из-за таких как ты, крапивы вообще не осталось, и нынешняя молодёжь вынуждена по ЛОРам шаровариться.

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

В принципе это аналог паскаля, только с ключевыми словами на русском языке

Даже если предположить, что весь англоговорящий мир прямо завтра накроет русскоговорящими ядерными бомбами, без английского в IT нечего будет делать ещё лет 100-200. Латынь вон дих пор в медицине используется. А софт тем более – творится всем миром. Так что на моё ИМХО, тратить время на какие бы то ни было национально-специфические языки – бессмысленная трата времени.

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

Я впервые заинтересовался программированием в 11 классе (15 лет назад) и могу уверенно сказать что никому кроме меня среди 11-классников это нахрен было не нужно.

Мне даже показалось что автор тролль, так как не могу всерьез принять что парниша из 8го класса решил читать руководство Cisco к CCENT/CCNA. Но наверно я просто уже не разбираюсь в школьниках.

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

никому кроме меня среди 11-классников это нахрен было не нужно.

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

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

Мне даже показалось что автор тролль […] Но наверно я просто уже не разбираюсь в школьниках.

+1, +1. :)

dimgel ★★★★★
()

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

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

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

Lrrr ★★★★★
()

Ты главное продумай, как из РФ свалить, а остальное - мелочи.

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

а также не изучать то, что ты потом не будешь использовать (паскаль)

Нереально. Выше правильно заметили, что к тому времени, как ТС окончит универ, куча технологий поменяется. Получается, что нельзя изучать ничего вообще: вдруг оно устареет?

Я в его возрасте изучал паскаль, потом C, потом C++. До сих пор не знаю, что случилось бы, если бы я сразу начал с C: был бы перегруз от низкоуровневщины без предварительного усвоения простого алгоритмического программирования на паскале, или проглотил бы. В любом случае, этот паскаль оказался наименьшим из всего, что я изучал на выброс.

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

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

Нереально.

Если учить то что используется, то шанс на то что прокатит есть, если паскаль, то нету совсем.

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

Я твой первый камент про s/pascal/cpp/g, к слову, лайкнул. :) Но как-то неуверенно. :)

dimgel ★★★★★
()

Жестец, я с 8 класса по 11 ни за что бы даже не прочитал все названное.

Привычки №1 и №3 как бы с противоположных концов, но обе важны, да.

Кстати, про книги - «Искусство программирования» Кнута, между прочим, не требует почти ничего, чтобы начать его читать и восхищаться. Я бы добавил его туда.

lealxe ★
()

не факт что оно будет через 5 лет, так что думай какие ещё варианты кроме айтишки

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

Главное не увидел, английский обязателен по прежнему, т.к. вся документация к любой библиотеке/программе только на английском актуальная.

ЗЫ

Порекомендую прикладную математику в качестве направления. Должна мозги вправлять немного.

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

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

сетевая и серверная инфраструктура

Это к DevOps. Для начала можешь попрактиковаться в конфигурировании контейнеров, тот же Docker. Или попробовать поставить OpenWRT на роутер (если есть совместимый роутер), так постепенно вкатишься в конфигурирование сетей.

высоконагруженное серверное ПО.

Энтерпрайзная скучища. Потребует чтения книг по типовым архитектурам и изучение какого-нибудь меинстрим языка типа C#/Java/Rust.
И если представить, что ты реально осилишь книгу по архитектуре то боюсь без практики это окажется прямым путем к карго-культу. Можно получить энциклопедические знания паттернов, уметь этим бахвалиться в «курилке» используя жаргонизмы и правильную терминологию, но превратить полученные знания в эффективно спроектированное приложение можно будет только после нескольких лет практики.

вычислительные сети

Понятия не имею что под этим подразумевается. Но можешь почитать что-нибудь про hadoop mapreduce, чтоб разобраться будет ли тебе интересно.
Лично я бы рекомендовал глянуть на вычисления на GPU, мне кажется это интересная и популярное направление. Раз ты все равно будешь изучать Си то можешь попробовать что-то написать с использованием OpenCL (PoCL или rusticl в mesa).

«Дискретная математика. Учебное пособие» (В. Е. Алексеев).

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

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

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

Перечисленную литературу не читал но список звучит интересно. Не представляю как такой список можно осилить параллельно с учебой, похоже на wishful thinking.

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

Мне даже показалось что автор тролль, так как не могу всерьез принять что парниша из 8го класса решил читать руководство Cisco к CCENT/CCNA

Тролль не тролль, но вроде движек Duke Nukem написал 16-ти летний парень. Может у TC папа/дядя из IT-шников и потому ТС такой прошаренный. А может сейчас, в эру инета, нет проблем с доступом к инфе и потому можно самому много чего интересного найти, было бы желание. У меня родственников таких не было но я обучался кодить с 12 лет, не то чтоб я очень любил кодить, но в том месте можно было играть плюс у меня получалось решать типовые алгоритмические задачки без напрягов.

P.S. Когда я в свои 18 лет ходил на радиорынок ища определенные книги по программированнию мне пару раз говорили чтоб я для начала закончил в школу. Выгладил я года на три моложе, но все равно такие фразы преземляют потому как кажется что тебя никто в всерьез не воспринимает и это сказывается на самооценке.

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

Виртуальные женщины, виртуальные школьники, виртуальные прединфарктные пенсионеры.

anonymous
()

ЛОРу не хватает космонавта или миллионера хотя бы.

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

В квотезы!

тоже виртуальные

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

не факт что оно будет через 5 лет

Что не будет? Профессии? Я думал, что нейросети — инструмент для программиста, а не его замена. Мне говорили, что нейросети не учитывают контекст и все детали конкретной задачи.

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

cybbit
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.