LINUX.ORG.RU

Новое издание первого тома книги «Программирование: введение в профессию» А. В. Столярова

 , , , ,


1

4

Вчера, 14 января 2025 года на сайте автора был опубликован первый том нового издания известной книги «Программирование: введение в профессию» за авторством Андрея Викторовича Столярова, известного на данном портале как @Croco.

Новое издание является исключительно электронным и имеет номер 2,9, а не 3. Номер 3 получит полноценное типографское издание на бумаге, если оно состоится.

>>> Подробности



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

Итак, оглавление книги от «умного» GPT

Оглавление

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

    • Что такое программирование?
    • Основные концепции и термины
  2. Выбор языка программирования

    • Обзор популярных языков
    • Как выбрать язык для проекта
  3. Основы синтаксиса

    • Переменные и типы данных
    • Операторы и выражения
  4. Управляющие конструкции

    • Условные операторы
    • Циклы и итерации
  5. Функции и процедуры

    • Определение и использование функций
    • Параметры и возвращаемые значения
  6. Структуры данных

    • Массивы и списки
    • Словари и множества
  7. Объектно-ориентированное программирование

    • Основы ООП
    • Классы и объекты
  8. Обработка ошибок и исключений

    • Типы ошибок
    • Механизмы обработки исключений
  9. Работа с файлами

    • Чтение и запись данных
    • Форматы файлов
  10. Основы алгоритмов и структур данных

    • Алгоритмы сортировки и поиска
    • Введение в сложность алгоритмов
  11. Введение в веб-программирование

    • Основы HTML, CSS и JavaScript
    • Создание простого веб-приложения
  12. Заключение и дальнейшие шаги

    • Ресурсы для изучения
    • Как продолжить обучение и развиваться в программировании
Parthen ★★
()
Ответ на: комментарий от Parthen

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

лолшто, в 14 лет на кружке в доме пионеров осилиливали без видимых трудностей.

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

Вот именно из-за таких книг и рождаются шутки: лекция по программированию: „Дети, вот гвоздики. А вот молоточки. Вот так можно молоточком забить гвоздь. Задание для самостоятельной проработки: постройте синхрофазoтрон“.

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

лолшто, в 14 лет на кружке в доме пионеров осилиливали без видимых трудностей.

Не видимых для кого? И уверены что осиливали?

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

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

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

Никто не мешает не использовать VLA или STL, но использовать другие возможности

Возможно, но вот, что думает этому поводу автор:

…проблема не в том, что кто-то «заставляет» ими пользоваться. Проблема в том, что стандарт «разрешает» ими пользоваться, выдаёт индульгенцию на их использование. А буковок при этом писать нужно несколько меньше, чем для вызова malloc, так что соблазн велик. Когда же руководитель разработки говорит разработчику, что VLA использовать не следует, в большинстве случаев он напарывается на вопрос «но почему, оно же есть в стандарте». Ответ на вопрос «почему», разумеется, существует, но он длинный, пространный и требует понимания таких вещей, о которых большинство кодеров просто не считает возможным задумываться, так что даже если этот ответ оформить в виде текста, массовым ответом на него будет сакраментальное «tl;dr».

http://stolyarov.info/node/187#cmt22

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

А чем тебе приведение типов в языках с нестрогой типизацией не угодило?

Может тем, что подобные языки, мягко говоря, крайне плохо подходят на роль первых, или даже вторых в изучении?

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

Разные подходы. На любой серьезной работе вынужденно приходится уже работать даже зная лишь малую часть необходимого и учиться в процессе

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

Так что я считаю материалы для вкатунов в ИТ это действительно не плохо

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от FishHook

Ага, я тоже олимпиады в 8 классе «на С++» сдавал.

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

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

Оглавление
Часть I: Введение в программирование

    Что такое программирование?
        История программирования
        Основные понятия: алгоритмы, код, компиляция
        Как выбрать первый язык программирования

    Основы алгоритмов
        Что такое алгоритм?
        Примеры простых алгоритмов
        Сложность алгоритмов: O-нотация

    Переменные и типы данных
        Числа, строки, булевы значения
        Массивы и списки
        Ввод и вывод данных

Часть II: Языки программирования
    Python: простой и мощный
        Установка и настройка Python
        Синтаксис: циклы, условия, функции
        Работа с библиотеками

    JavaScript: язык веба
        Основы JavaScript: переменные, функции, DOM
        Асинхронное программирование: Promises, async/await
        Фреймворки: React, Vue, Angular

    C++: скорость и контроль
        Основы C++: указатели, ссылки, управление памятью
        Объектно-ориентированное программирование (ООП)
        Шаблоны и STL (Standard Template Library)

Часть III: Продвинутые концепции

    Объектно-ориентированное программирование (ООП)
        Классы и объекты
        Наследование, полиморфизм, инкапсуляция
        Практические примеры на Python и C++

    Функциональное программирование
        Чистые функции, лямбда-функции, замыкания
        Примеры на Haskell и JavaScript
        Преимущества и недостатки функционального подхода

    Многопоточное и асинхронное программирование
        Основы многопоточности: потоки, процессы, GIL (Global Interpreter Lock)

        Асинхронное программирование: event loop, корутины

        Практика: многопоточность в Python (threading, asyncio) и C++ (std::thread)

Часть IV: Практика и инструменты

    Событийно-ориентированное программирование
        Что такое событийно-ориентированное программирование?
        Примеры: Node.js, GUI-приложения (Qt, Tkinter)
        Паттерны: Observer, Pub/Sub

    Тестирование и отладка
        Виды тестирования: unit-тесты, интеграционные тесты
        Инструменты для отладки: debugger, логирование
        Практика: написание тестов на Python и JavaScript

    Разработка реальных проектов
        Как начать свой проект: планирование и архитектура
        Работа в команде: Agile, Scrum, Kanban
        Публикация проекта: хостинг, Docker, облачные сервисы

Приложения
    Приложение A: Список полезных ресурсов для программистов
    Приложение B: Шпаргалки по синтаксису популярных языков
    Приложение C: Примеры проектов для портфолио
alysnix ★★★
()
Ответ на: комментарий от Zeev

Может тем, что подобные языки, мягко говоря, крайне плохо подходят на роль первых, или даже вторых в изучении?

Тогда за каким хреном столярик рекомендует паскаль где есть приведение типов в качестве первого языка? Да ещё и позиционирует его в качестве промежуточного шага к С где тоже приведение типов есть. Причём в обоих случаях как явное так и не явное.

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

жуть, это книжка про паскаль, си и бабушкин интел386. в 20х годах 21 века.

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

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

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

Zeev
() автор топика
Ответ на: комментарий от Man-o-Jar

…и не сойти с ума (невозможно).

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

В Питон строгая динамическая типизация, а вот в js нестрогая.

sabacs
()
Ответ на: комментарий от Man-o-Jar

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

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

Прочтите вступление к книге и первую главу ассемблерной части.

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

В паскале или си числа в строки автоматически приводятся?

В паскале или си отсутствует автоматическое приведение типов?

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

Оно ограниченом переводом из целого в число с плавающей точкой и изменением разрядности. Число в строку, как в JS ни в одном из этих языков не перейдёт.

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

Программированию тоже номинально в школе «учат»)))

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

Так может не нужно тратить на это время, есть ведь калькулятор?

Разовью мысль дальше. Может и писать не нужно учить, зачем тратить на это время, все равно все печатают сейчас, как правило, правильно?

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

Разовью мысль дальше. Может и писать не нужно учить, зачем тратить на это время, все равно все печатают сейчас, как правило, правильно?

я не учитель словесности и не филолог. ничего сказать по этой теме не могу.

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

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

я предлагаю задавать вопросы по существу, а не про «учить писать».

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

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

Анархо-примивист, читающий это сообщение бы расстроился.

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

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

Сразу видно что ты по столярику учился вместо нормальных книг. Строгая она в Haskell например. В С указатель на любой тип можно привести к указателю на любой другой тип - и словить в рантайме кучу ошибок, которые в языке со строгой типизацией до рантайма никогда бы не дошли. В Pascal пытались сделать нормально, но не осилили и там ровно то же самое из-за untagged variant record (так у них union называется).

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

Разовью мысль дальше. Может и писать не нужно учить, зачем тратить на это время, все равно все печатают сейчас, как правило, правильно?

Рано. Но скорее всего к этому придёт. Умение писать от руки становится нужно всё реже и реже. И в отличие от умножения в столбик оно не даёт лучшего понимания предмета. Но пока рано. Пока умение писать от руки всё ещё полезно большинству людей. Когда отказывались от письма пером и чернилами, переходя на перьевые, а потом и шариковые ручки, тоже людям по началу казалось, что нельзя так делать, такой важный навык пропадает. И ничего, уже много поколений воспитано, которые пером и чернилами писать нормально не умеют, толщину соблюдать не будут, клякс наставят — но живут вроде. Вполне вероятно, что и письмо шариковой ручкой станет ненужным большинству через какое-то время. Думаю, лет через 40–50 — когда нынешние школьники станут бабушками и дедушками.

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

Может и писать не нужно учить

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

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

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

А вот преобразование чисел в строки…

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

Оно ограниченом переводом из целого в число с плавающей точкой

Чё эт ты заюлил вдруг? Оно как бы да, но раз гуру сказал нет, то значит как бы нет, а вон в жабаскрипте вообще негров насилуют…

«Вы не понимаете, этодругое111столярикбох!»

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

Умение писать от руки становится нужно всё реже и реже.

ИМХО, каллиграфия сродни рисованию, это хорошо развивает мелкую моторику, учит концентрировать внимание. Я бы оставил.

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

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

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

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

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

то с пониманием реального машинного представления

а вы уверены, что понимаете реальное машинное представление переменных в питоне?

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

Что? Да, неявное преобразование есть, и ни я, ни Андрей Викторович этого никогда не отрицали, во второй части этому вообще часть одного из параграфов посвящена. Дело в том, что там оно применяется в случаях, когда его применение рационально обосновано, когда в JS и чуть реже в Питоне можно вообще не понимать, что происходит, и шанс того, что неофит не будет понимать крайне высок.

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

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

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

Конечно. Любая переменная это указатель на PyObject.

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

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

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

Примерно так в большинстве школ сейчас учат писать по английски. Хотя я cursive writing сам выучил и активно применяю.

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

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

Это у нас теперь строгость системы типов языка определяется тем, что о ней знают нерадивые ученики? Воистину, не читайте опусы шизоидов на ночь! :-D

А вот преобразование чисел в строки…

Откуда здесь столько травмированных JS? То что там можно сравнить жопу с пальцем и получить квадрат Малевича не делает типизацию паскаля и С строгой.

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

ИМХО, каллиграфия сродни рисованию, это хорошо развивает мелкую моторику, учит концентрировать внимание. Я бы оставил.

Да, в этом есть здравое зерно. Однако вполне возможно, что её можно заменить другими активностями, развивающими мелкую моторику и концентрацию внимания не хуже, а может и лучше.

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

Рано. Но скорее всего к этому придёт. Умение писать от руки становится нужно всё реже и реже. И в отличие от умножения в столбик оно не даёт лучшего понимания предмета.

Даёт. Я обожаю делать заметки от руки. Решаешь рабочую задачу, ничего не понятно, куча компонент которые как-то друг с другом связаны, неизвестно зачем нужны, неясно с чего начать … а расписал систему карандашом на четвертинке А4 и сразу становится очевидно как клубок распутывать.

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

ugoday ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)