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)

Скоро лето, сходи куда нибудь на стажировку, найти компанию можешь на hh.ru, там есть карта, я бы искал поближе к дому.

Там и материал дадут, и подскажут, и задачи будут более реальными.

Я бы Pascal заменил на С++, а SQLite на PostgreSQL.

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

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

Хороший, правильный список. Хороший, правильный школьник. Осталось дело за малым — не только всё это расписать, но и следовать.

А ЛОРовцам стоит не забывать, что бывают и такие вот, нормальные школьники, с грамотной речью, чёткими целями и осознанием необходимых шагов, а не только кали-клоуны.

CrX ★★★★★
()

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

anonymous
()

:)

У меня сын учится в 8-м классе. Вот не верю в это всё. Ни в составленный план, ни в планы на будущее, ни в найденный перечень книг (ага, 8-ми классник решил что обязательно нужно прочесть/прорешать Фихтенгольца с Демидовичем; почему не Кудрявцев или кто-нибудь еще).

Но если же вы всё-же 8-ми классник, то советую записаться в спортивную секцию 3 раза в неделю. Лучше 5, если пойдет. Насчет программы университета, пусть даже по ограниченному набору предметов, вам пока-что беспокоиться не зачем. Особенно, если это вы сами действительно всё составили/написали. А вот со спортом можно проморгать.

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

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

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

а SQLite на PostgreSQL

зачем? sql и там, и там, но скулайт поднимается несравнимо проще, а всякие jsonb ТСу еще не скоро понадобятся.

leave ★★★★★
()

Локация у Вас какая? Попробуйте сходить в дом пионеров, если такой есть, и там систематически отзаниматься в целевой секции, может повезет. А вообще я б в это в 8 классе не вписывался, лучше (интереснее и более увлекательно) в робототехнику/авиамоделирование/etc, где это ваше программирование используется как прикладной инструмент решения задачи.

И держи нас в курсе, интересно что у тебя из этого всего получится.

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

А вот со спортом можно проморгать.

Да. Возможно, со стороны это и выглядит как старпёрство, но отличный совет, лёгкий спорт в детстве/юности уже не заменишь никакими упражнениями во взрослом возрасте. Все знакомые, которые исключительно ботанили*, а не ботанили+занимались спортом (как я) - после 25 начали отчаянно хрустеть везде, а после 35 начали разваливаться.

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

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

Не вижу комбинаторику, линейное программирование, цифровую обработку сигналов, нейросети, графы.

Так же стоит пощупать какой-то язык ФП, допустим lisp. Еще prolog и erlang дают возможность пощупать модели вычислений отличные от классической императивной.

Потом книжица Ахо и Ульмана «Структуры данных и алгоритмы». Классика Кнута

cobold ★★★★★
()

архитектура ПК, работа процессора и оперативной памяти;

алгоритмика и типы данных.

Вот эти два пункта (+ общее программирование) по отдельности изучать смысла почти нет. Надо вместе и они будут взаимно дополнять друг друга.

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

Это, несомненно, полезные вещи и их стоит изучать, но программирование само по себе тут не особо при чём.

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

Странное заявление.

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

Да, их неспроста не любят.

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

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

Это, несомненно, полезные вещи и их стоит изучать, но программирование само по себе тут не особо при чём.

Может мне так везло, но дискретная математика очень часто оказывается при чём.

Gentooshnik ★★★★★
()

Ты прям солидно развернулся. Делай упор больше на технологии, которые родились давно и дожили до сегодняшних дней. C, TCP/IP, Linux, SQL к примеру. Паскаль хорош для старта, но долго на нем не засиживайся. Технологии, которые появились позднее 2000 года на данном этапе лучше не углубляться. В технологии, жизнеспособность которых сейчас вызывает сомнения — тоже. В индустрию ты зайдешь лет через 8. За это время многое изменится. Когда окончишь школу, если тебе удастся следовать своему плану, в универе начинай присматриваться к актуальным технологиям.

Специализацию себе тоже выбирать не спеши. Рано. Изучай фундамент.

Я бы советовал попробовать в олимпиадное программирование. Алгоритмы вечны и мозги развивают.

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

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

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

Есть живой язык, с живыми проектами, на паскале можно только изучать всякий формокод на делфи. Библиотек нет, развития нет, работы нет. Вот изучил он паскаль, и все, тупик, дальше все равно C/С++.

зачем? sql и там, и там, но скулайт поднимается несравнимо проще, а всякие jsonb ТСу еще не скоро понадобятся.

Так суть вроде в обучении, поднять PostgreSQL, это хорошая задача для начала.

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

поднять PostgreSQL, это хорошая задача для начала.

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

Для программиста - написать клон PostgreSQL.

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

мне нравится информатика

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

anonymous
()

Хорошо очень написан текст. Будто помогал кто-то. Неужели в 9 классе человек уже так хорошо излагает мысли?!

Дискретность и непрерывность до конца нельзя изучить, скорее всего.

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

работы нет

АЛЛО, 8 класс!

Вот изучил он паскаль, и все, тупик, дальше все равно C/С++.

и в чем проблема? Сначала научиться программировать, потом учиться страдать, все логично.

Так суть вроде в обучении, поднять PostgreSQL, это хорошая задача для начала.

Человек хочет учиться программированию, а не администрированию. На кой хрен ему уходить в сторону в самом начале?

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

не верю в это всё

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

Ни в составленный план, ни в планы на будущее, ни в найденный перечень книг

Меня ещё с первого класса приучали к планированию.

8-ми классник решил что обязательно нужно прочесть/прорешать Фихтенгольца с Демидовичем

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

Наводку на книги Демидовича и Фихтенгольца я получил из статьи об изучении математического анализа и комментариев к ней.

А вот со спортом можно проморгать

Спасибо, учту.

cybbit
() автор топика

Что-то какая-то мешанина прямо. Насчёт КуМира не знаю, нафига он нужен, можешь конечно поковыряться, но по-моему смысл есть только если английского прямо совсем не знаешь, даже begin/end, а что-то покодить хочется.

Какие-то основы математики и более чем достаточно паскаля есть как раз в

Трёхтомный учебник «Программирование: введение в профессию» (А. В. Столяров);

Так что отдельная книга по фрипаскалю тебе не нужна.

Так что я бы скорректировал план

  1. Программа школы по математике — ну да, стоит её знать, но мне кажется ты и так знаешь основное.

  2. Учебник Столярова. Хотя он в некоторых областях фанатичен излишне, так что воспринимай всё с долей скептицизма.

  3. Если математика из этого учебника не понятна - ещё какие-то книги, если понятна, то на твоё усмотрение.

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

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

В универе на младших курсах требовалось рисовать блок-схемы, но делал я это по остаточному принципу — вначале код, а потом уже по нему схема.

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

системы счисления, единицы измерения инф., сигналы, частоты, дискретность и непрерывность;

Ну честно говоря, это материала на страницу или две. Что тут изучать?

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

Английский. Много читать, слушать, писать, было бы прекрасно еще говорить.

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

Математика: к уже выделенным постепенно можно добавить линейную алгебру и теорию вероятности это в минимуме. Естественно, если брать более вычислительно ориентированные специализации уже в будущем, то чем больше прикладного, тем лучше. Может криптография и абстрактка зайдут.

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

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

Странное заявление.

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

sin_a ★★★★★
()

Можно ещё так: 1)Прочитать статьи по булевой алгебре в Вики. 2)Посмотреть список алгоритмов у Дасгупты и Шеня. Их классы. 3) Посмотреть на то, как выглядит код на Паскале и Асме. Попробовать написать пару программ для работы со строками. 4) Прочитать учебник по C. Керниган и Ритчи. 100 страниц, дальше необязательно. Попробовать что-нибудь закодировать, а потом плотно подумать, нужно ли оно?!

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

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

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

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

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

Xenius ★★★★★
()

Читал по диагонали, мне кажется, надо выбросить все, что связано с Паскалем, КуМаром, вебней и Тексом. Это пустая трата драгоценного времени и распыление сил. Учите Плюсы или Пайтон. Плюсы полезнее, главное не удавиться в процессе обучения. :)

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

книг Таненбаума почему-то в списке не вижу

Сначала я наткнулся именно на книги Таненбаума, но из обзоров в Интернете на его книгу по сетям я сделал вывод, что этот автор слишком ударяется в теорию и старается охватить вообще всё (даже не только то, что касается сетей; например, он излишне углубляется в физические аспекты). Также многие комментаторы жаловались на качество перевода его книг на русский язык.

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

Кто начинает программировать с Си++? Вы вообще как себе представляете новичку объяснить вот эти std::shit, ООП, всякие другие приколы, если он, вообще НИКОГДА не программировал? Си++ конечно надо изучить, но намного позже.

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

Будто помогал кто-то

Мне помогли советы некоторых пользователей в других темах (похожих на мою) этого сайта.

в 9 классе

Пока ещё в восьмом. Учебный год ещё не закончился.

Дискретность и непрерывность до конца нельзя изучить, скорее всего.

Как я понял, основ будет достаточно.

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

Не знаю как C «мешает воспринимать ‘нормальные’ языки» программирования, лично для меня после K&C понять языки вроде Java в разы проще. Где и как память копируется, где выделяется, сколько, трюки с операндами (байтоманипуляции), как писать/начать программы под POSIX без множества библиотек, и т.д.

ЗЫ я же не предлагаю с AND гейтов или даже какого-нибудь ARM асма изучение начать :D

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

работы нет

АЛЛО, 8 класс!

Да хоть 40 лет, какая разница?

и в чем проблема? Сначала научиться программировать, потом учиться страдать, все логично.

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

Человек хочет учиться программированию, а не администрированию. На кой хрен ему уходить в сторону в самом начале?

Администрирование это если бы я предложил продакшн реади кластер развернуть.

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

Насчёт КуМира не знаю, нафига он нужен, можешь конечно поковыряться

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

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

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

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

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

А с этим делом очень все сложно, даже если человек гений и на лету схватывает.

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

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

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

Дискриминация какая-то. Лучше, конечно, иностранные языки выбирать, рисование. Если человек способный, информатику можно быстро объяснить (10-20) уроков. Конечно, глубоко освоить - это совсем другое. Но надо ли оно?!

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