LINUX.ORG.RU

Программирование 2025. Полный Вкат.

 


8

4

Продублирую свой вопрос на форуме.

Так какие книги на данный момент самые лучшие для полного вката в программирование?

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

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

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

вайбик: https://www.youtube.com/watch?v=WmnDcLGnYck


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

goingUp ★★★★★
()

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

«Реальные рабочие проекты» на 90% созданы из обвязки центрального алгоритма. Чтобы быть хорошим программистом, надо практиковаться не в тривиальной обвязке, а в распознавании и быстром применении различных алгоритмических приемов.

  1. Понять задачу.
  2. Распознать алгоритм.
  3. Адаптировать и реализовать без ошибок.

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

P.S. Алгоритмы это многое, но не всё. Надо еще в Компьютерных Сетях и Архитектуре ОС как следует разбераться.

Успехов добрым молодым разработчикам. Читайте Столярова «Системы и Сети», тренеруйтесь на Leetcode.

P.P.S. Алгоритмические задачи на LeetCode сподручнее решать на Python.

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

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

И так ежели вы батенька желаете учить асм и маш код - то какую архитектуру изволите учить? и да - опять же асм совершенно бесполезен без знания устройства вашей конкретной железяки. А их сейчас очень, очень много. Ну разве что может быть стоит немного поиграться с асм и архитектурой RISC-V - потому как штука перспективная и в ближайшее время перспективная в области различных контроллеров - а в контроллерах как раз очень часто нужна оптимизация на асме. Ну либо - из тех же соображений - Arm.

Qui-Gon ★★★★★
()
Ответ на: комментарий от qulinxao3

Если у вас есть опыт - какие из существующих версий среды Оберон живы?

Я слышал про Native под x86, потом были какие-то непонятные реализации в user space.

Из этого хоть что-то юзабельно, или это все тупо курсовые и дипломные работы студентов Цюрихского Университета?

vsnb
()

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

Вы описали полный курс высшего образования. Его опубликовал Столяров в своих книгах с несколько «старорежимным» подходом. Но там практически все высшее образование есть.

Он 20 лет преподавал, взял практически весь материал программирования в вузе и опубликовал в трехтомнике и задачнике. Изобретать ничего не надо. Вся информация есть. Это примерно образование 2000-х.

Сейчас поверх всего этого надо добавить JS/Python/Docker.

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

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

Первый курс:

  • Математическая вводная.
  • Базовые алгоритмы на Pascal.

Второй курс:

  • ASM
  • C

Третий курс:

  • TCP/IP
  • Архитектура ОС

Четвертый и пятый курсы:

Декларативное программирование.

lbvf50txt
()

Да ты графоман! И как заметили выше, действительно не видишь леса за деревьями. Потом, язык - это всего лишь деталь, а не само программирование. Не путай такое важное и значительное как программирование с чем-то малозначительным, с совсем мелким по смыслу языком программирования. Ну, сейчас язык один, а завтра - другой. А вот концепции, идеи останутся теми же. Короче, не скатывайся на вторичные признаки, если сможешь!

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

имхо у Столярова мало распределённого программирования ( в смысле Танненбаума Укто-то - там примеры на пипоне что примечательно)6 издание вроде как

так же у Столярова реально мало классики - у него буквально срез знаний которые были общепропагандируемые в конце 80ых + его личное освоение тоже уже набравшего ход unix-bsd-linux движения

при том что даже тогда тот же Дейта( структуры хранения данных ) уже был на русском - а сейчас доступны и первичные источники - теже маны unix (programmers manuals - первый том чисто маны - второй том - авторский взгляд на продукт) как и спец выпуски белллабс от 1978 и 1984 г посвящённые юниксу и вокруг

и алгоритмы(да Вирт в библиограффии и Кнут - и даже Кормейн и даже Таненбаум в части матрёшки машин) но видно что его взгляды мало учитывают туже теорию акторов что и проявляется очень специфичными реализации сети (чисто по Стивенсу но с лакунами )

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

на informatica-21 Ткачёва заповедник вполне промышленных

https://informatika-21.ru/welcome.html

и для обучения вполне

тока имхо вот хоть и офтопик:

Командная строка CMD Учебное пособие Валентин Юльевич Арьков. — [б. м.] Издательские решения, 2021. — 122 с.

очень прикольна ибо показывает что была бы консоль (сmd/sh/bash/zsh/python/js в браузере по f12/) и возможность императивного минимума для скриптоты - (помнится где-то тут чел начинал програмивать из клиента mirc постепенно наворачивая тулзы)

вообще когда учать прогать из ide ( которая была крута TurboСреды - т.е. сила правильной среды ТП такой случай - мгновенность получения исполнения и пошаговый(Вирт против - да и многопоток проще инвариантами чем брекпоинтами) отладчик)

а не чисто из repl это лишний слой - что усложняет неофитам ибо дополнительное «разименования»

поэтому так крут ipython

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 2)
Ответ на: комментарий от Qui-Gon

Я знаю, что самый низкоуровневый кроссплатформенный «ASM» - это язык C (который не ASM, естественно, и высокоуровневый к тому же, хотя и ASM более высокоуровневый, чем машкод).

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

Не знаю пока насчёт RISC-V, его давно пилят, пилят, но его пока всё нет.

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

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

имхо у Столярова мало распределённого программирования ( в смысле Танненбаума Укто-то - там примеры на пипоне что примечательно)6 издание вроде как

Плюс работ Столярова в его системности, это набор книг, которые покрывают всё и сразу. Таких авторов больше нет, чтобы и Shell, и ASM, и TCP/IP, и VIM, и Make, и Kernel, и line discipline, и сигналы, и i-node с драйверами, и сверху ещё виртуальное адресное пространство процесса. Каждая тема освещается поверхностно, но на достаточном уровне для понимания основных механизмов. А главное, всё структурировано и последовательно, нет каши.

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

Точно так же, я уверен, будет с вопросами для Java/C++/NodeJS/Python разработчика. Потому что Столяров в своих книгах объясняет все направления работы программиста на понятных обобщённых примерах. И как только выходишь за рамки языка программирования, сразу переходишь в область, описанную в книгах Столярова.

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

Продолжу.

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

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

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

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

извини но Керниган или Ульман или ////

просто отчего то в некоторых обществах принято ожречивать области

в результате пока не курнул Бахманов Программист-Навигатор ну и обнаружение что Ульман и компиляторы с Ахо-Хопкровтом и БД с «Какими-то рэндомами»

по сути пока массово не распространились многопочтопроцессорные процы +-2008(-4-5) у конченных пользователей наиболее горячим местом по использованию паралельности были БД

т/е реальная проблема в образование искусственное возведение границ между областями - хотя бы косвенно через опредмечивание - вот это попадёт в курс по ОС - а вот это вот в чёнить другое

и это бы не было бы проблемой если бы продолжали бы просто спицифику тех же алго и структур как они «морфируются» под изменение ограничений - а в место этого «придумают очередное ОПП и давай ...»

гиганский же процент пользователей БД уверен что у СУБД буквально таблицы построчно организованны :(

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

leetcode это софтскилз - если без контестов - чисто поиграться

Зависит от цели. По моему мнению, Leetcode — это более чем достаточно для прикладного программиста, Codeforces можно уже отнести к спорту. Если Leetcode — это физкультура, то Codeforces — спорт высших достижений.

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

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

гиганский же процент пользователей БД уверен что у СУБД буквально таблицы построчно организованны :(

На то они и пользователи, чтобы не понимать, как устроен механизм.

извини но Керниган или Ульман или ////

В целом я достаточно прагматично отношусь к образованию, и советовать «изучать лишнее» у меня желания особого нет. Столяров + Leetcode — надежная связка. Если коротко дать ответ на вопрос «как стать программистом», я бы дал такой совет:

«Литкодить на Python, вдумчиво читать трехтомник Столярова.»

Есть 1000 нюансов, десятки прекрасных книг, множество технологий и парадигм. Но базовая основа — это наработанный практикой навык кодирования с Leetcode и обобщенные представления о функционировании компьютера, от адресации системных вызовов до TCP/IP сокетов из трехтомника Столярова.

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

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

«Алгоритмы + структуры данных = Программы», «Алгоритмы. Введение в разработку и анализ», «Паттерны проектирования», «Чистый код», «Совершенный код».

LongLiveUbuntu ★★★★★
()

Недавно в видео про китайскую каллиграфию у Ильи Бадурова я услышал китайскую пословицу:

«10 тысяч трансформаций не уходят от своего корня.»

Корень современного IT — это Алгоритмы + UNIX + TCP/IP.

  • (UNIX + TCP/IP) отлично расписан у Столярова.
  • Алгоритмы постигаются через практику на Leetcode на языке Python.

Теперь практическое приложение: относительно недавно появился новый протокол QUIC, а также еще более относительно — IPv6. Но, разбираясь в модели OSI и твердо зная TCP/IP, разобраться в этих изменениях совершенно не сложно. 10 тысяч трансформаций не уходят от своего корня.

Еще одно практическое приложение: относительно недавно стали востребованы «брокеры сообщений» вроде Apache Kafka и RabbitMQ, а еще более относительно — интервью по системному дизайну. Но, зная, что такое FIFO и решив на него пару детсятков задач c разными вариациями (two pointers, sliding window), разбираться в «брокерах сообщений» не сложно. 10 тысяч трансформаций не уходят от своего корня.

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

Появляются новые технологии, а разбираться в них, имея базу, совсем не сложно.

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

Ух, вот это ты вспомнил. Помнишь ЛОРовца, для которого жена (вроде) топик создавала, про актуальные книги по программированию. Что бы не деградыровал пока сидит.

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

Если сосредоточиться на технической стороне вопроса, то можно сказать следующее:

Хороший фронтендер — это не просто «рисование кнопок», а специалист, разбирающийся в системной архитектуре, сетях и алгоритмах.

UNIX, TCP/IP и Алгоритмы остаются фундаментом — и вот почему.

Современный браузер берёт на себя функции классической ОС: унифицирует платформы, предоставляет API и абстрагирует железо. По сути, браузер — это ОС для веба, и без понимания её устройства сложно создавать эффективные приложения.

Например:

  • Не зная, как работает TCP/IP, можно неоптимально настраивать HTTP/3, что приведёт к лагам в SPA.
  • Без понимания RTT и latency легко наделать лишних запросов, ухудшив UX.

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

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

Так какие книги на данный момент самые лучшие для полного вката в программирование?

Никакие. Эта тема была актуальна 10-15 лет назад. Перед ней была актуальна тема юристов, а до неё тема экономистов.

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

тут пользователи - прикладные пограммисты

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

по этому и получается эффект магии

в краях происходит полное расхождение между ожидаемым и реальностью

подобно трэшингу https://ru.wikipedia.org/wiki/Пробуксовка_(информатика)

т.е реальные механизмы настолько «глубого эшелонно дублированны и самоадаптивны » что инструмент в далеко за штатных режимах(а кто в доки из погромистов ваще глядит) оно успешно едет(и даже летит)

а потом внезапно(для пользователя) крах

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

Никакие. Эта тема была актуальна 10-15 лет назад.

наоборот! сейчас весьма актуальна с учетом импортозамещения
или следуешь по стопам омбудсмена? https://habr.com/ru/articles/356434/

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

по этому и получается эффект магии

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

Но уже с определенного уровня сложности, например, онлайн географические карты, онлайн стратегические многопользовательские игры, начинает резко требоваться вся мощь «классической академической школы»: Алгоритмы + UNIX + TCP/IP.

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

Дальше всё начинает накручиваться как снежный ком, вот уже и FrontEnd разработчик должен в тесной связке работать с DevOps и BackEnd инженером. Понимать, из каких составляющих формируется задержка, какие ресурсы когда подгружать, какие протоколы использовать. Хотя казалось бы! Игры четвертьвековой давности.

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

У Столярова же новое издание 2 тома про Системы и Сети вышло. Рассматривал я описание виртуального процесса в изображении Столярова (5.3.3 Виртуальное адресное пространство). Снизу — ядро и стек, а над ним — куча с (DATA, TEXT, BSS). Потом я заглянул как изображено виртуальное адресное пространство в других источниках, а там наоборот: снизу (DATA, TEXT, BSS), куча, потом сверху стек, потом ядро.

Думаю, что не так? Может, Столяров ошибся где-то. А потом вспомнил, что стек растет вниз к 0 индексу! Это еще из первых курсов.

И получается, что у Столярова снизу вверх убывают адреса, а в изображениях зарубежных источников наоборот — снизу вверх возрастают адреса. У Столярова 0 вверху, а в зарубежных источниках 0 внизу. Вот и всё. Ошибки нет, всего-то разное направление координатной оси.

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

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

Хотя у Таненбаума на рисунке 11-7 код ядра расположен на младших адресах. Может, там дальше будет именно виртуальное пространство x86 процесса. Полистал, не нашел. Зато много интересного: и LRU-Cache, и целая глава про Deadlocks, и параграфы про мьютексы. Чего только нет у Таненбаума. В (Figure 1-20. Processes have three segments: text, data, and stack.) не упоминается ядро, но стек растет вниз. Всё чётко.

А так везде показано, что ядро находится в старших адресах рядом со стеком.

Вот и связь между Алгоритмами и Архитектурой ОС, и с вопросами на должность Golang разработчика.

«10000 трансофрмаций не уходят от корня» - точная китайская пословица. Разбираться в более конкретных задачах помогают базовые принципы. В данном случае реализация структуры данных Stack, через этот базис и с адресом Kernel разобрались, и разные направления координатных осей в разных изображениях Virtual Address Space определили.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 14)
Ответ на: удаленный комментарий

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

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

  • Не в коня корм.
  • Не по Сеньке шапка.

P.S.

Из 12 сообщений, полных источников для самообразования и последовательной программы действий, поговорка про «10 000 трансформаций не отходят от своего корня» упоминается только в последних двух завершающих. Более того, она упоминается не сама по себе, а с историей конкретного практического применения. Это короткое резюме подчеркивает главную идею.

Если всё, что вы смогли почерпнуть из этих 12 сообщений — это интерпретация поговорки «фанатичным бредом». И при этом такой агрессивный подход к человеку, который к вам относился с симпатией и пытался вам помочь. То вы показали не самые блестящие навыки в работе с текстом и взаимодействии в команде.

Сейчас разработка — это прежде всего работа в команде, soft skills и избегание острых углов.

С такими шаблонами поведения прогноз на «вкатывание в IT» не самый благоприятный. Ничего личного.

lbvf50txt
()

Так какие книги на данный момент самые лучшие для полного вката в программирование?

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

anonymous
()

@NeoX, сейчас я проскролил тему и шаблон вашего поведения следующий:

  • Вы задаете вопрос: «Как стать программистом?»
  • Опытные программисты дают профессиональный совет.
  • Вы в ответ огрызаетесь: «Что вы мне тут переусложняете!», «Что за фанатичный бред!».

Вам @yax123 и я даем развернутые ответы, советы неочевидные для новичков. Действительно, язык программирования — это достаточно второстепенно, вопрос удобства. Основа — это оценка сложности алгоритма и знание устройства ОС — абстракций, с которыми работает любая программа вне зависимости от языка.

Вами демонстрируется поведение типичного форумного «вкатыша», мол «сами с усами» разберемся. Или же тролля. Так зачем вы тогда вопросы задаете? Вы же уже все сами знаете.

Советы опытных пользователей тем и ценны, что они «не очевидные», и не «так как кажется».

Тем более я постарался неочевидные спорные моменты «академической теории» продемонстрировать на практических примерах современных технологий и вопросов из собеседований.

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

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

Для полного вката в программирование надо писать программы.

Согласен. Это мой девиз: «Программист должен программировать».

Правда, есть нюанс: можно месяцами изобретать велосипед, какой-либо базовый алгоритм работы с деревьями или графом. Хотя, если обратиться к литературе, то на доскональный разбор этого алгоритма уйдет два дня (неделя) максимум.

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

«Bad programmers worry about the code. Good programmers worry about data structures and their relationships.» (с) Linus Torvalds

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

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

peregrine ★★★★★
()

К слову, где-то полгода назад я впервые за много лет употребил в программе goto. :)))

Мне надо было выйти из многоуровневого цикла. В Java для этого есть break с меткой. В С++ (по крайней мере, того старого стандарта, под который этот проект писался) break работает только на один уровень. Да, можно было бы ввести булевский флаг и трижды его проверять, но в коде это смотрелось очень громоздко. Поэтому я написал goto breakAllItems и ещё сопроводил это язвительным комментарием для тех, кто только книжки читал и вздумает стриггериться на ключевое слово.

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

Инструменты надо просто использовать подходящие под задачу, а не по принципу «писал и писать буду» или наоборот, «изыди, сатано».

hobbit ★★★★★
()

послушал местных пиарасов Столярова, начал читать второй том и увидел вот такое: https://i.postimg.cc/9MpBGHkH/stolyar.png

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

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

послушал местных пиарасов Столярова, начал читать второй том и увидел вот такое: https://i.postimg.cc/9MpBGHkH/stolyar.png

Тут анонимус цитирует абзац из 4.3.5 Операции и Выражения. Из второго тома «Системы и Сети» А.В. Столярова.

Конкретно выделяет следующую строку о short-circuit evaluation: «если значения выражения уже определено, второй операнд не вычисляется». Речь и идет о логических операциях.

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

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

  • В случае Логического И &&, если левое выражение falsely, сразу возвращается falsely. Правая часть не расчитывается.
  • В случае Логического ИЛИ ||, если левое выражение truly, сразу возвращается truly. Правая часть не расчитыатеся.

Могут быть нюансы, например в Ruby "one"||1 вернет «one», 1 || true вернет 1. Т.е. в Ruby возвращаются значения выражений, а не булевый тип как таковой. Но сам факт о частичном исполнении логических бинарных операторов верен.

Код на Go:

package main

import "fmt"

func truly() bool {
	fmt.Println("it is true")
	return true
}
func falsely() bool {
	fmt.Println("it is false")
	return false
}

func main() {
	ans1 := truly() || falsely() // it is true
	ans2 := falsely() && truly() // it is false
	fmt.Println(ans1, ans2)      // true false
}

Код на Go Playground:

https://go.dev/play/p/qRNaXzUV420

Cтоляров пишет верно. В вопросах Си на него можно полагаться смело.

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

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

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

Первым делом я бы освоил «Линукс» и каким образом создавать, собирать и отлаживать программы на нем. Либо на серверах, либо в бортовой электронной апппаратуре рано или поздно каждый программист имеет дело с «Линуксом» и будет лучше уметь копошиться в нем. Тут может помочь чтение книги Митчела, Олдвелла и Сэмюэла «Advanced Linux programming».

Без вычислительных сетей сегодня невозможно представить работу ни торговых предприятий, ни ростовщических контор, ни промышленных предприятий. Для общего ознакомления с устройством вычислительных сетей может помочь книга Олиферов «Компьютерные сети». По написанию сетевого ПО можно почитать Ричарда Стивенса в его книгах «Unix. Разработка сетевых приложений» и «Unix. Взаимодействие процессов». Для сетевого программиста это азы.

По вэб-программированию я могу посоветовать ознакомиться с книгой Минника и Холланд «Coding with JavaScript for dummies».

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

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

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

Если исходить из этой оценки исторических языков, то мозги ещё надо поискать — на своём месте их точно не видно.

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

К слову, где-то полгода назад я впервые за много лет употребил в программе goto. :)))

Мне надо было выйти из многоуровневого цикла

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

slackwarrior ★★★★★
()