КАК ЧИТАТЬ ИСХОДНЫЕ КОДЫ | СОВЕТЫ ОТ СОЕРА
#soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwareengineervlog
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/id/5f578bdf22e2...
GitHub - github.com/soerdev
Чат для программистов - / discord
Группа ВК - codeartblog
Пікірлер: 85
Помню как кто-то сказал, что в роликах Soer'a много воды. На счёт этого видео, не могу, не согласиться...
Главное научится читать коды в stackoverflow)
@user-hc8zr1tv4h
4 жыл бұрын
Да? А там что всё понятно?
Хочу немного дополнить, сказав про свой опыт чтения кода. Хочу сказать, я далеко не опытный программист на С++. Я его изучаю примерно пол года, и когда-то давно подруга попросила меня немного изменить одну простенькую программу на SFML. Когда я набралась достаточного опыта и решила изучить SFML, я вспомнила про её просьбу. Нашла исходники, и по началу не было совершенно ничего не понятно. Абсолютно ничего. По началу я думала, что это какой-то нечитаемый говнокод или что мне попросту чересчур рано лезть в реальные проекты. Благодаря некоторым людям на дискорд сервере мне стали понятны некоторые участки кода, но до полного понимания как до Москвы на коленях. Периодически я решилась иногда читать его, и со временем мне постепенно начало приходить понимание, как оно работает. Почему это написали именно так. Я наконец спустя долгое время научилась разделять проект на несколько файлов так, чтобы это было уместно, проектировать программу так, чтобы всё было на своих местах и было читаемым. Изначально попытка прочитать код была очень тяжёлой, но впоследствии она научила меня очень важной вещи - проектированию. Небольшая программа, которую я сейчас пишу - первая, которую я могу назвать действительно полноценным проектом. Это дало мне огромное количество опыта
@anonym1548
4 жыл бұрын
Всё потому что, я написал этот код, как боженька!
@egorpetrov6652
4 жыл бұрын
Поставил лайк за фразу «как до Москвы на коленях» ;)
Благодарю за информативное видео!
как всегда полезно, на работе не всегда таких людей найдешь которые могут так подсказать
Клёво)) Очень непривычно от вас, Евгений, видеть такие короткие видео) Спасибо за видео! p.s мб про собеседования байки расскажете?
Чётко объяснил, спасибо
За данное видео поставил бы 5 лайков. Именно прочтение книг по паттернам и SOLID в свое время дало прорыв в понимании кода.
@denyskulpa6241
4 жыл бұрын
А что за книга больше понравилась, если помнишь?
@inzagher
4 жыл бұрын
@@denyskulpa6241 я читал Роберта Мартина. Книга называется "Принципы, паттерны и методики гибкой разработки на языке C#". Перевод меня устроил.
Парень дело говорит. Я и сам, не так давно, для решения своих задач, начал дописывать функционал чужого кода. В процессе изучения кода - узнаю много полезного и нового для себя.
Привет, спасибо тебе большое. Ты выпускаешь видео именно тогда, когда это просто крайне необходимо. Читаю исходники по ардуино, понимаю крайне мало
@igorchesnokov482
4 жыл бұрын
Лучше ходить по коду с отладчиком. А главное - первое с чем нужно определиться - это для чего этот код, собственно, читается....
Только после работы вернулся, где сегодня пришлось подсмотреть в один компонент кенды под ангуляр ;) Я же всё же считаю, что текст исходный как книгу можно воспринимать и читать, если там есть оглавление и вводная, в виде логики бизнеса(аля домен). А так спасибо за скорый ролик! Отличного отдыха! P.S. а у нас тут каша снега на улицах :D
На энтерпрайзе чтение исходного кода-основа,потому что этот код который писался очень давно и нужно его улучшать и добавлять новые фичи
Особенно забавно бывает читать сорцы фреймворка, который используешь... Мне кое-чего не хватало в формах Django. В том плане, что без js некоторые вещи просто не реализовать. Полез внутрь. В итоге написал некоторую надстройку, которая позволяет делать на серверной стороне то, что не работало по разным (не зависящим от меня) причинам на клиенте. Ну и заодно чуток в программирование метаклассов "окунулся" - оказалось весьма интересно... Правда, не знаю, как это всё уживётся с недавно вышедшей третьей версией джанги. )))
Скорость воспроизведения 1.75 идеально
Soer, расскажи где начать обучение программированию, интернет порталы, форумы, литературу с которой стоит начать. (имеется ввиду основы программирования)
Спасибо за советы..! Кстати никто не снимает видео как пользоваться Github... т.е заходим в поиск... фильтруем код под си++ ... находим проект... а дальше что..? Что такое make... readme... main... как его загрузить и портировать в какой нибудь eclipse... или что такое elf.. dll... т.е те вещи, которые все уже давным давно знают... именно это и есть преграда на пути к пониманию... как скомпилировать его под windows... linux... будет ли он пользоваться всеми ядрами процессора... а может он мог бы использовать видео карту...
О, Привет!
Смотрю на будущее)) До тупика в развитии еще очень очень далеко=)
Насчет ребусов. Есть же доки к програмам. В html виде с деревьями наследования и абстракциями.( причем все это на автомате выходит если тулзы ide использовать) Ваефреймами блоксхемами в конце концов. Просто один раз по блоксхеме пробежался .Есть такие 'чужие коды' которые читать просто как либу какую изучаешь.
а появляются ли новые принципы типа солида? банда писала свою книгу давно, сейчас много времени прошло, есть ли что-то ещё теперь?
крутой совет! Если еще систематически изучать код лучших из лучших, то вообще пушечный рост! И помните ресурсы вашей жизни каждую минуту стремятся к нулю. {SE Soer}.
Лайк!
Чтение стандартной библиотеки STD C++ похоже на расшифровку криптотекста.
@firework21
4 жыл бұрын
Это точно. Даже желание читать исходники как-то отбилось, а когда начал лазить под капот PHP-фреймворков, то с удивлением обнаружил, что в принципе там всё понятно.
@Uni-Coder
4 жыл бұрын
Можно реально переполнить свой стек.
Да, Сбер плохого не посоветует))
А видос реально вышел в 16:00 :))
Чтение чужих кодов важно (просто потому, что тебе рано или поздно всунут проект, который разрабатывал Вася Пупкин, но он уволился, а продолжать тебе). Но это полный ад. И хорошего, читаемого кода не существует. (Ну, кроме моего, конечно :))
@_________5287
3 жыл бұрын
Полностью с тобой согласен
А! Вспомнил! Ещё один вопрос! Вот в хедере есть дефайн, например #define GPIO_IDR_IDR0 ((uint16_t)0x0001) /*! Вот в мэйне его можно вызвать по его определению, ну то есть если я вставлю его в код, он сработает? Типа такого: #include "stm32f10x.n" void main(void){ int variable = GPIO_IDR_IDR0; }
@illvllsllsl6
8 ай бұрын
Ага
лучший
Как отличить хороший код от плохого? Может быть код будет сложный и запутанный, но не потому, что задача была сложной, а просто потому, что разработчик выбрал неправильный подход для решения и не применял нужных паттернов. Как человек, который читает код, определит это?
@fillin3124
4 жыл бұрын
Если поймёшь код другого программиста и у тебя не возникнет желания реализовать это по своему, то лучше решение другого программиста, чем отсутствие решения вовсе
программисты до сих пор читают код по старинке, вместо того чтобы придумать систему которая формировала какую-нибудь нодовую систему из кода для нормального восприятия и наглядности
Мне нравится сравнение кода с ребусом. Получается, что хороший код, как хороший ребус. Тебе приятно его разгадывать :)
Это второй коммент для продвижение канала.
Соер, расскажи как искать хорошие примеры кода, кроме рабора библиотек
@Flint367
4 жыл бұрын
@@hvac_vdk уточню, мне желательно проджекты на JS
@god_bika
4 жыл бұрын
Разбор библиотек.
@Flint367
4 жыл бұрын
@Роман Китаев принял
@avazart614
4 жыл бұрын
@Роман Китаев Да нифига, достаточно важно. На Си (исходники GNU) скорее всего не будете принципов ООП. На С++ будет RAII а в C# Java не будет итд итп.
Я джун с опытом 1год, нашел работу, где команда допиливает чужой кривой проект. Через 2 дня работы я уволился, тк вообще ниче не понял в чужом коде и сам процесс его понимания это был ад. И я подумал, зачем так мучаться? Работа должна быть в кайф.
Здравствуйте, нужен программист на очень перспективный проект, есть у вас кто ?
привет ты ещо в риме?
Привет. Читаю исходники для stm32, cortex-m3. Упёрся в непонимание typedef struct. Плюс не понимаю зачем нужен int32_t и в чём ПРИНЦИПИАЛЬНАЯ разница с обычным int. В гугле все объяснения какие то мутные и расплывчатые. Уже голова болеть начала... Но мне нужно это понять.
@Embedded_Developer
4 жыл бұрын
int32_t и в чём ПРИНЦИПИАЛЬНАЯ разница с обычным int@ А если написать вот так: #define int8_t char #define int16_t short #define int32_t int #define int64_t long #define uint64_t double У разных машин и разных языков расположение в памяти "char","int","long","short" разное. Просто #define-шь их навсегда и всё. надо выделить 8 бит? ок, пишешь int8_t. надо выделить 32 бита? ок, int32_t. чтобы каждый раз не вспоминать - а "char" это сколько?
@gunnargunaxe
4 жыл бұрын
@Svetlana V я ни где не могу найти что это значит... вот строка, прям копипаста из хэдера: #define TIM2 ((TIM_TypeDef *) TIM2_BASE) что значит этот знак умножения? зачем он нужен? как работает? это указатель? вот другая строка(точнее несколько): #define PERIPH_BASE ((uint32_t)0x40000000) /*! #define APB1PERIPH_BASE PERIPH_BASE #define TIM2_BASE (APB1PERIPH_BASE + 0x0000) А вот здесь то как раз всё ясно. TIM2_BASE это значение APB1PERIPH_BASE прибавить 0x0000. Ну и так далее. А вот этот знак умножения, прям не понял вообще...
@egorpetrov6652
4 жыл бұрын
Zed Zedd , а если в разных языках long будет иметь разное кол-во байт, то получается нет гарантии сколько байт будет выделено при использовании int64_t. Поправьте, если я ошибаюсь.
Евгений, вопрос на засыпку - а как читать чужой говнокод? )))
@adeusexmachina
4 жыл бұрын
в респираторе и в перчатках) а если серьёзно нужно сначала понять что там именно говно: стиль оформления, наименования переменных или всё красиво, но через задницу и по чайниковски. Сложнее читать говностиль. И нет ничего проще для понимания опытным программистом, чем говнокод неопытного джуниора, особенно если он ещё и не оптимизированный. Обычно вся логика лежит на поверхности, способы реализации и алгоритмы до ужаса прямолинейные. Если же это серьёзный большой проект для будущей правки и нужно понять что там происходит, чтобы это перелопатить, то, проще всего перед чтением нужно его стилизовать, привести в порядок наименования переменных. А дальше обычно всё будет легко. Профессиональный красивый код, но жутко заоптимизированный или заумный порой разгадывать сложнее. На западе про такое говорят (over-engineering)
Я джун js, посоветуйте пожалуйста книгу по паттернам.
@temendcrossman5589
4 жыл бұрын
Банда четырех. Классика
@BHy4OK
4 жыл бұрын
Зачем джуну паттерны? Вы их никогда джуном адекватно не примените, только башку засорите
да что можно увидеть в гавнокоде современных прогеров? работаю на таком проекте, где даже коментов в чужом коде нет, про логику и чистоту, я вообще молчу.
Мне 10 лет и я легко читаю чужие исходные коды
Круто, но оставьте капс бьютиБлоггерам ;)
А как можно в практике не читать чужой код? В реальной работе мы же чаще работаем в других проектах с другими людьми
Вообще то нужно чётко знать какие вопросы решает данный код, а это нереально узнать без хорошей документации? Тут свой то код если не задокументируешь, то через некоторое время сразу и не поймёшь. А разве кто нибудь документирует свой код на гитхабе? Сразу же назревает вопрос: КАК ЧИТАТЬ ИСХОДНЫЕ КОДЫ?
Лидо ди Остия?
Пишет вам тестер без особого образования. Сначала читал плюсовый код, теперь учусь читать java код. Слабо делать это как я, используя total commender и нотпад? Вот вот, разрабы ссут, а я могу. Возьмите меня на работу 300кк в наносекунду.
Про "чтение кода должно быть как читать книгу" скорее всего больше относится к комментариями. Даже если код и вьется, возвращается обратно вверх через goto, комментарии все равно можно писать сверху вниз как книгу. Как не крути но любой код даже ООП в итоге сведется к процедурщине где сначала подключается главная библиотека, потом идет вход в главную функцию, потом создается главный объект в которой помещается другой в зависимости от чего-то там и тд. Часто если комментарии хорошо описывают почти каждую стоку, то и нет особой необходимости углубляться в код, придумывать заумные названия переменным которые через две строки уже можно чистить. Код мы все-таки не читаем, а интерпретируем (в большей степени), как компьютер, а вот комментарии мы по-настоящему читаем.
Комменты спасут программистов... Или выше своего достоинства писать комментарии (что, куда и откуда)???
То есть, я правильно делаю, что читаю чужой говнокод, а не пишу свой?
Оч прошу, синъёры, очень прошу, дайте почитать крутой код.
@BHy4OK
4 жыл бұрын
AntiBlog держи: while (true) { console.log(«крутой код»); }
@SineSet
4 жыл бұрын
void main() {}
Что такое Паттерны?
@JohnDoe-ji1zv
4 жыл бұрын
Не туда написал)))) Гугл рядом )
@user-ph4js4lu2y
4 жыл бұрын
@@JohnDoe-ji1zv ага, вот только из гугла нихрена не понятно, из-за этого у меня бомбит.
Задолбали уже с теми паттернами! Там, где прекрасно и быстро работает банальный фор - лепят такую хрень иногда, что потом просто охреневаеш! Вот не было бы Джавы - Андроид работал бы на порядки быстрее, и все приложения для него. Но она - есть! А еще паттерны - это когда проект до 500 кб в разжатом виде, а девдепенденсов к нему на 80 мегабайт тянет. А ЕС6 или ЕС201Х - это то, что Адоб сделал в Экшн Скрипт 3 (грубо говоря) еще 10+ лет назад. Ну вас к черту с вашими паттернами - как хорошо жилось до всего этого. Применять это надо там, где это реально нужно, а не лепить везде, куда ни глянь. Функциональный подход в ЖС - пиши на Хаскеле иди - лепишь неслепуемое и заставляешь потом меня в этом всем разбираться. А мне - лень учить весь этот компьютер сцаенс! Я и без него деньги зарабатывал хорошо, а щас - те же деньги, но плюс еще паттерны разные натулили.
@igorchesnokov482
4 жыл бұрын
Не волнуйтесь Вы так, через некоторое время нам снова будут рассказывать, что ООП - это путь... Оно так уже несколько десятилетий по кругу ходит...
да ладно
Нет звука
Шум бесит
Соер, что ты несёшь где конкретика для джуниоров, какую библу где с чем использовать, для каких задач, какие у тебя были проекты и как ты их реализовал, как думать как прогер, сложна и не о чем чёт снимаешь), ахах а стековерфлоу теперь всегда замечаю, ух чтоб без него делали начинающие, как я