Хороший, красивий, чистий код
Більш детальний розбір коду - t.me/AlexKovalchukTg/36
Стів Возняк геніальний програміст. Він робив з кодом таку еквілібристику що зараз важко повірити що таке можливо. В ті часи усі програмісти мали викручуватись, щоб помістити свої програми в обмеження комп'ютерів. Зараз такий код не вважається хорошим, бо комп'ютери стали потужніші та через те що такий код майже неможливо читати й підтримувати. Тепер навіть круті та швидкі програми зосереджені на хорошу архітектуру і підтримку. Тому такі шедеври залишились у 80-тих, а красивий вважається більш простий для людини, а не машини
00:00 Вступ
00:54 Код Возняка
03:06 Код Лінуса
04:22 Як будуть писати потім
05:54 Висновок
Для підтримки - www.buymeacoffee.com/alexkova...
Telegram - t.me/AlexKovalchukTg
З питань співпраці і реклами пишіть - t.me/Kelli_Nixe або alex.kovalchuk.media@gmail.com
Пікірлер: 118
Дякую за Вашу роботу! Круто, що є канал із високим рівнем контенту і адекватності! Хотів додати трошки свого розуміння процесу кодінгу. Гадаю, що "чистий код" не має бути фетишем для розробників, а лише як етап (частина) розробки. За роки своєї карʼєри розробника бачив 99% проектів, що не "взлетіли" і вмерли на етапі прототитів. Тому одразу "чисто" писати не завжди варто. Головне - швидкість! То ж вважаю, що спочатку має бути робочий прототип для замовника, потім, якщо проект "стрельнув", рефакторінг з "чистим кодом", а вже на потім - оптимізація за ресурсами та швидкістю. Хоча, погоджуюсь, що із рівнем досвіду прототипи будуть писатися ближче і ближче до стандарту "чисто", щоб потім менше було переписувати )) Але "чиста архітектура" відпочатку - мастхев! П.С. Коментар для підтримки каналу )) Ще раз дякую!
@alex-kovalchuk
11 ай бұрын
Так, підхід MVP дуже важливий для того, щоб взагалі вийти на ринок. Мені подобається створення продукту в рамках хакатону. Коли з нуля до першої робочої версії витратили 2-3 дні та далі орієнтуватись на фітбек користувачів
@illyaevseev312
9 ай бұрын
Чесно кажучи, я не дуже розумію чому чистий код не може бути швидко написаним. Скажімо написати нормально структурований код і все в одній функції займає приблизно один і той же час. А коли ти пишеш якісь розширення чи утілити це в подальшому навіть скорочую розробку. При цьому технічний борг завжди дуже дорого обходиться. То навіщо взагалі писати криво?
Вже 11к підписників)) Вітаю) А я пам'ятаю як 200 чи 500 було) Вірив що якісний українській контент проб'ється
@user-cl5qn2qb7w
11 ай бұрын
Проб'ється. Ютуб змінив алгоритми. Тепер зібрати перегляди на хорошому контенті, як раз чхнути.
Дякую за те що шануєте час глядачів, все стисло та змісновно, без води та переливання з пустого в порожнє Окреме спасибі за відсутність інтро)
У Вас круто все і доступно. Коментар для підтримки каналу. Нажаль також хотів в IT, але нажаль потреба знімати житло поставила хрест на цьому.
Гарний ролик про гарний код, дякую! Про Ґейтса майже правда! ;-) Тільки підкажу, що строка по-нашому -- рядок :)
Як завжди, цікаво. Дякую. Хай квітне український KZread! 🇺🇦
@alex-kovalchuk
11 ай бұрын
Дякую за підтримку
я пів відео тільки подивився, але це краще ніж все що я бачив)
Дякую за відео та вашу працю! Слава Україні!
Чистий, хороший код - мрія кожного програміста. Шкода, що користувачі та їхні мами наврядчи його оцінять. 😊 З іншого боку: "пратівний" код, котрий зможете читати лише ви, гарантуватиме вам робоче місце мало не пожиттєво. Станете "ключником" в компанії, особливо в державній. 😁😂🤣
@alex-kovalchuk
11 ай бұрын
Цілком реалістична стратегія)
@illyaevseev312
9 ай бұрын
Взагалі-то оцінять. Просто для користувачів він виглядає дещо по-іншому. Для них це швидкі виправлення, постіне додавання функціоналу тощо. З приводу стати "ключником". Можливо воно і звучить прикольно. А от насправді все дещо не так. У нас є один замовник, проект якого взяли дописувати без участі програмістів. Проект досить давній. З самого початку в нього було закладено декілька тупикових технологій. Можливо на той час воно і було виправдано. Але як факт. Потім, судячи з комітів, вирішили, що розробник занадто багато бере. Код дійсно гарний. І понеслося. Кожний наступний додавав безладу та милиць. А тепер уявіть собі результат. Більшість бібліотек не оновлюється тому, що їх давно закинули. Якщо щось не працює, то спитати ні у кого. Тільки старі відповіді та розбирання коду. Додайте сюди ще помилки в архітектурі і ви отримаєте всю повноту вражень. Виправлення кожної помилки це ще той квест. А додання чогось нового це взагалі ще те пекло. Особисто я не готовий займатися чимось таким до кінця свого життя.
Дуже дякую Вам за вашу працю, за ваші цікаві та корисні україномовні випуски
@alex-kovalchuk
11 ай бұрын
Дякую за підтримку
Дякую, за працю, дякую за українську, вподобайка та комент.
@alex-kovalchuk
11 ай бұрын
Дякую за підтримку
фуг, я вже думав що ти докорінно зміннив тематику каналу для більш поверхневої аудиторії, дякую що продовжуєш робити відео і на трохи глибші теми
@alex-kovalchuk
11 ай бұрын
Я ще готую велике відео про vim, але воно вийде не раніше ніж через місяць
Гарний код той, впершу чергу, який виконує поставлену перед ним задачу. Ще гарніший, якщо він з першої спроби написаний і не вертається по 10 рез з теста чи рев'ю. Після цього я би поставив продуктивність - споживання ресурсів. І тільки після цього патерни, парадигми та іншу лободу, якими так часто підміняють саме поняття якісного коду.
Дякую за такий крутий та україномовний контент 🔥
@alex-kovalchuk
11 ай бұрын
Дякую за підтримку
Коли я починав в C#, за var (окрім кейсів, коли мегаочевидно що це) били по рукам, а тепер уже прописування строгих типів (окрім кейсів, коли необхідно експісітлі фіганути тип) - моветон. Це до того, що погляди на те, що таке хороший код з роками міняються
цікавий плакат у вас за спиною)
@alex-kovalchuk
11 ай бұрын
Це натяк на наступне відео)
@markusrid6271
11 ай бұрын
@@alex-kovalchuk заінтригували , буду чекати)
Дякую за якісний контент. Зніміть будь ласка відео про топ книг для професіоналів програмістів по типу: дядечко Боб чистий код, чиста архітектура, еджайл, патерни проєктування тощо.
Грьобаний Біл Гейтс!!
відмінний контент!
@alex-kovalchuk
11 ай бұрын
Дякую
6502 ще може множити та ділити на 2 націло завдяки побітовому зсуву (shl shr або > в синтаксі С)
как всегда лайк от СЕООНЛИ!!!!!!!!!!!!!!!!!!
Кінцівка шикарна 😂
Щось мені нагадує ця вставка про Біла Ґейтса в кінці)
В фільмі "Пірати кремнієвої долини", що базується на реальній історії, герої розповідали, що в Возняка, якраз, не дуже виходило з float-point. Треба, цей історичний момент якось з'ясувать. При всій повазі до пана Возняка, але це не я вигадав, то-ж мене не шейміть ;)
Я впевнаний що відео цікаве
Цікаво, от на пітоні взагалі можливий читабельний код? Всі спроби його застосування складали враження, що воно створено для ... не для програмування точно))
@alex-kovalchuk
11 ай бұрын
Можливо, але треба звикнути до стилю написання. Уявляєш як важко людині яка весь час писала лише на python. Для неї усі мови з С подібним синтаксисом жахливі на вигляд (від незвички)
А найголовніше в угарі оптимізації, коли застряв наглухо, не плюнути і не написати десь блок на асемблері.)) За таке тебе розстріляють. 😅
оо, я теж ту книжечку купив)
Вітаю! Є питаннячко, бачу зліва від Вас на поличці є книжка "Патерни Проєктування. Head First", і саме питання: "яка Ваша думка про дану книгу і книги подібних серій Head First". Дякую.
@alex-kovalchuk
11 ай бұрын
Це не фундаментальна література, але цілком пристойна. Я не жалію що читав її
Ось наглядний приклад що поняття хорошого коду субʼєктивне. На 3:20 все супер очевидно, "ага пройшлись по списку, ось вказівник на попередній, якщо він не нал... ага, все зрозуміло". На 4:00 "хороший код", ні я згоден, прикольна ідея, але в мене він просто мозок виніс, "вказівник на вказівник, стоп, забули head встановити, а стоп нє, остання строчка й цей кейс покриває". Хоча я б сам скоріш зробив би так само, просто обрав би інші імена змінних й ще додав би змінну або коментар, щоб покращити читабельність. Як мінімум би ще дужки додав би біля &(*.
@mishadrug98
11 ай бұрын
Плюсую. Це вже не говорячи про можливий креш в тому місці і явний витік пам'яті. (Хіба якщо якимось чудом там стекові дані збережені) Хоча, в першому теж витік пам'яті
Треба писати код якомога гірше, без коментарів, щоб потім якщо треба було щось змінити, було легше все переписати, ніж дописати.
@alex-kovalchuk
11 ай бұрын
Як не іронічно а я підтримую відсутність коментарів в коді 😅 Я вважаю що якщо код треба коментувати то краще його переписати
Хороший код це той який написаний тобою.©
у всьому винен біл гейтс))))🤣
@alex-kovalchuk
11 ай бұрын
Це ж правда 😅
@PreacherOfChaos
11 ай бұрын
@@alex-kovalchuk тоді треба було ще додати що треба підписатися на цей канал а від всіх інших відписатися🤭😂
Сприймаю це відео як знак, що варто повчитись
Скажіть будьласка, а Skype це хороший код? Він-же давно пишеться, з ваших слів він апріорі має бути хорошим
@alex-kovalchuk
11 ай бұрын
Skype має закритий код тому важко оцінити його якість
Як початківець в python скажу що чистий код дуже важливий. Сам почав цю тему колупати відносно не давно.
@lembergsun
11 ай бұрын
враховуючи шо там відступи мають значення, це не дивно 😁
@savin55589
11 ай бұрын
@@lembergsun пахвха, практично стандарт відступів усюди такий самий, один tab або 4 пробіла.
@savin55589
11 ай бұрын
@@lembergsun хочу ще добавити відступи це не саме головне в чистому коді.
@Dmytro-Tsymbaliuk
11 ай бұрын
@@savin55589 хтось не зрозумів сенс речення в пітухоні форматування коду важливе, коли для інших мов взагалі прохріну скільки там пробілів і перенесення на нову строку
Нормуль
У всьому винен "білгейтс" - ось тут я звами цілком згоден
Штірліц)
Если бы ещё были книги по языку с примерами хорошого кода.
@alex-kovalchuk
11 ай бұрын
Один з варіантів це аналізувати великі бібліотеки на github. Зазвичай там якість коду на доволі хорошому рівні
@whu.9163
11 ай бұрын
@@alex-kovalchuk заліз я якось source-код sqlalchemy почитати:))))
@_sort_
11 ай бұрын
@@whu.9163 То ви ще не читали код ядра linux :). Хоч воно написано доволі гарно. АЛЕ! Ти не знаєш, де той початок, взагалі, ЗВІДКИ його починати читати :D. Лише документація виручає.
@kirillsviderski4739
9 ай бұрын
refactorguru, і дуже попудярний Роберт Мартін "чистий код"
@whu.9163
9 ай бұрын
@@kirillsviderski4739 чистий код варто прочитати, але обережно і зі здоровим скепсисом)
крутий бекграунд
@alex-kovalchuk
11 ай бұрын
Дякую)
Недавно вийшло україномовне видання "Чистий кодер" Роберта Мартіна, якраз є цікаві думки про написання коду і його підтримку (тестування)
@kirillsviderski4739
9 ай бұрын
Я дітям давай цю книгу ще у 2020ому)
5:00 Ну да. Зато в Java теперь появились var-ы и лямбды. И то, и то как-то пофиг в языках, которые и так изначально нетипизированы, но это ж Java!.. Была. Вместо варов с лямбдами лучше бы препроцессор вернули, а то приходится какими-то костылями типа gradle пользоваться. Ну и классический protected тоже было бы неплохо. И friend. И... А, да ну его.
Відео почалося не з привітання ...)
@alex-kovalchuk
11 ай бұрын
Вирішив не витрачати ваш цінний час)
то всьо херня. на практиці - хуяк, хуяк і в продакшин 😂
@xyzw777
8 ай бұрын
ну да, ато за трудозатраты в сотню часов на доработку и уволить могут
Головне щоб все працювало а потім його привести до всіх кананлів чи заповідей Божих можна потім.
@alex-kovalchuk
11 ай бұрын
Схожу концепцію має автор TDD. Спочатку усе має працювати, а потім виглядати гарно. Ну але він робив акцент що спочатку треба писати тест, а потім код для нього
1:01 шо то на ассемблере? Выглядит очень страшно)
@alex-kovalchuk
11 ай бұрын
В ТГ (t.me/AlexKovalchukTg/36) детальніше описав
@user-co8qq6dl6n
11 ай бұрын
@@alex-kovalchuk подписался 🙂
але коли гівнокод на тайпскрипті це взагалі винос мозку )) типи які всі між собою звязані і не звязані одночасно і щоб зробити невеличкі зміни в схемі доводиться змінити половину коду. Тому мабуть якби питали мене гівнокод на строгій типізаціі або без типізаціі і треба щось пофіксити я б вибрав не строгу типізацію. типізація може подарувати ілюзію безпеки, але якщо все компілються в жаваскрипт і ти прцюєш з домом який може змінити не твій код або апі яке може повернути не те що ти очікуєш типізація не дуже допоможе. що круто в типізаціі це те що твій редактор набагато краще може давати тобі підказки ) для всього іншого лінтер і тести )
@alex-kovalchuk
11 ай бұрын
Так, є небезпека з тайпскриптом. Якщо програміст занадто розслабляється думаючи що TS все покриє то це до хорошого не доводить. Особливо небезпечну думку якось почув таку: "Оскільки я юзаю TS то тести можна не писати"
4:54 якесь розмите поняття "більш строгої" типізації. Мабуть мова йде саме про статичну типізацію, а не строгу, якщо далі йде мова про Typescript
@alex-kovalchuk
11 ай бұрын
Так, в першу чергу про статичну, використав "більш строга" як узагальнення явної, статичної типізації. Типу у всіх напрямках пішло покращення
@ni55an
11 ай бұрын
@@alex-kovalchuk але ж strong typing не может бути узагальненням static typing 🤔
@alex-kovalchuk
11 ай бұрын
Не може, але як php, так і js (за допомогою TS) рухався з weak до strong і з dynamic до static одночасно (якщо уявляти на графіку, то знизу зліва наверх в право) Просто мені "більш статична" звучить дивніше ніж "більш строга"
@ni55an
11 ай бұрын
@@alex-kovalchuk наприклад (стосовно з weak до strong)?
@alex-kovalchuk
11 ай бұрын
Приклади від weak до strong PHP з версії 7 додав можливість вказати типи параметрів функції на вхід і на вихід. Або з найсвіжішого з версії 8.2 додали самостійні типи null, false і true. У випадку з TS історія аналогічна. Типи параметрів функції на вхід і на вихід - це більш строга типізація в порівнянні з JS. Просто weak і strong не варто сприймати як перемикач від одного стану до іншого
7:11 And remember... no russians
Клятий Білл Гейтс, зіпсував мій код😅
Я б сказав що в прикладах Лінуса - обидва приклада погані, бо в коді головне - неймінг. Тут зрозуміти що означають імена змінних можна тільки якщо ти вже глибоко в контексті.
@alex-kovalchuk
11 ай бұрын
Це доволі абстрактний метод тому і назви розкривають суть
@DirtyNewYorker0
11 ай бұрын
@@alex-kovalchuk Ці назви розкривають суть тільки читачу, який ВЖЕ розуміє що тут відбувається. Щоб зрозуміти що таке walk, шо це взагалі за тип і нахіба ця змінна існує - треба зрозуміти весь алгоритм (я розумію що це не дуже складно, бо алгоритм простий, але це не виправдання).
Гейтс реально скотиняка - так паскудити мій код ще треба вміти)
Слабо віриться в код яикй виглядає норм, особливо в перші роки. Зазвичай ти дивишся на код з думкою "шо за дятел міг це написати? як таких взагалі Земля носить?" а через хвилину розумієш шо це повністтю твій код)))
@alex-kovalchuk
11 ай бұрын
Так, і це нормальний процес. Набагато гірше коли в перші роки уже подобається код, це означає що людина не розвивається, хоча такого майже не зустрічав
ты на Gnu linux сидишь?
@alex-kovalchuk
11 ай бұрын
Не на gnu дистрибутиві. Основна система це macos і arch linux
@alexsklyarov6792
11 ай бұрын
@@alex-kovalchuk запиши ролик про arch
Згідний, в усьому винуватий Гейтс
Пишу коментар без значення, але оскільки коментарі збільшують обсяги, то може той коментар без значення має значення.
@alex-kovalchuk
11 ай бұрын
Хех можливо допоможе, дякую за підтримку
Типу вивчити php за 10 днів неможливо?)
@alex-kovalchuk
11 ай бұрын
Навчитись писати хороший код за 10 днів неможливо, а php вивчити і зробити сайт цілком можливо. Особливо з допомогою chatGPT
Зараз я абсолютно не розумію програмістів, котрі бояться давати своїм змінним змістовні назви. IDE зазвичай дозволяє не вводити їх назви вручну в місцях використання і пропонує автодоповнення. Зараз уже не той час, коли у розробників малі монітори, краще хай код буде "ширшим", але читабельнішим просто за рахунок назв змінних і без тонни коментарів, котрих можна було уникнути.
@alex-kovalchuk
11 ай бұрын
Ага, особливо нервує коли називають item, i, key хоча працюють з конкретними сутностями
Повага до україномовних блогерів...
ставь лайкос если за грязный но быстрый код
Згоден тільки з останнім пунктом😡
@alex-kovalchuk
11 ай бұрын
А з чим саме не згідний по інших пунктах?
@shoperz0
11 ай бұрын
На фоні останнього вони виглядають неправдоподібно. А так я просто жартувати не вмію
Подписался. Но аватарка с синими волосами это конечно пи..ц.