Мы все часто слышим, что написанию хорошего кода (и качественной разработке в целом) можно научиться только опытным путём, методом проб и ошибок, через реальные проекты; или даже, возможно, хорошими программистами рождаются, а не становятся. И при этом мы постоянно читаем о принципах, которые лежат в основе хорошего кода: инкапсуляция, модульность, связность... Многие из них контринтуитивны, то есть были изобретены/открыты в академических кругах, мировыми специалистами в computer science.
Нету ли тут некоего противоречия? :)
Нету ли тут некоего противоречия? :)
Diagram as Code: рисуем красивые диаграммки питон-кодом.
Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well.
Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture design without any design tools. You can also describe or visualize the existing system architecture as well.
GitHub
GitHub - mingrammer/diagrams: :art: Diagram as Code for prototyping cloud system architectures
:art: Diagram as Code for prototyping cloud system architectures - mingrammer/diagrams
Отличное выступление на PyCon 2015:
"Beyond PEP 8 -- Best practices for beautiful intelligible code"
Distillation of knowledge gained from a decade of Python consulting, Python training, code reviews, and serving as a core developer. Learn to avoid some of the hazards of the PEP 8 style guide and learn what really matters for creating beautiful intelligible code.
Классный пример, как 20 строчек кода отрефакторить в 3 строки, да и вообще поразбирайтесь с этим примером, рекомендую.
Более подробный разбор этого доклада сделаю для занимающихся у меня, в СильныхИдеях -- про то, что надо прежде всего уметь выявлять общие структуры управления и абстрагироваться от них. На самом деле, подобных паттернов не так уж много (только не путайте их конечно с искусственными "паттернами проектирования"). Усвойте эти принципы, и у вас появится внутренняя сила, которая не позволит вам писать плохой код, и вы будете блистать своими скиллами на собеседованиях и код-ревью :)
Ну если только вы не занимаетесь у меня ))) я бы сперва настоял на том, чтобы вы прежде всего исправили магическую константу: жёстко закодированный IP-адрес (мой курс Ясный Код в помощь).
"Beyond PEP 8 -- Best practices for beautiful intelligible code"
Distillation of knowledge gained from a decade of Python consulting, Python training, code reviews, and serving as a core developer. Learn to avoid some of the hazards of the PEP 8 style guide and learn what really matters for creating beautiful intelligible code.
Классный пример, как 20 строчек кода отрефакторить в 3 строки, да и вообще поразбирайтесь с этим примером, рекомендую.
Более подробный разбор этого доклада сделаю для занимающихся у меня, в СильныхИдеях -- про то, что надо прежде всего уметь выявлять общие структуры управления и абстрагироваться от них. На самом деле, подобных паттернов не так уж много (только не путайте их конечно с искусственными "паттернами проектирования"). Усвойте эти принципы, и у вас появится внутренняя сила, которая не позволит вам писать плохой код, и вы будете блистать своими скиллами на собеседованиях и код-ревью :)
Ну если только вы не занимаетесь у меня ))) я бы сперва настоял на том, чтобы вы прежде всего исправили магическую константу: жёстко закодированный IP-адрес (мой курс Ясный Код в помощь).
YouTube
Raymond Hettinger - Beyond PEP 8 -- Best practices for beautiful intelligible code - PyCon 2015
"Speaker: Raymond Hettinger
Distillation of knowledge gained from a decade of Python consulting, Python training, code reviews, and serving as a core developer. Learn to avoid some of the hazards of the PEP 8 style guide and learn what really matters for…
Distillation of knowledge gained from a decade of Python consulting, Python training, code reviews, and serving as a core developer. Learn to avoid some of the hazards of the PEP 8 style guide and learn what really matters for…
Джуниоры нужны всё меньше?
"Storyboard Programming" разработана в Массачусетском технологическом институте нашими с вами друзьями. Автоматическая генерация кода, реализующего операции над различными структурами данных (чем мы на курсах по АСД занимаемся вручную) на основании картинок, которые программист рисует мышкой "интуитивно" (квадратики и стрелочки) и добавляет примеры ввода-вывода.
Тут есть видео, как это происходит.
А брат этого товарища занимается разработкой фреймворка синтеза программ, который оптимизирует сам себя, и умеет генерировать formula simplifiers под конкретные предметные области.
В СильныхИдеях сделаю небольшой разбор этой темы, которая в наших прозаических целях очень важна прежде всего тем, что, как показано математически, даже сильно сложные функции (логику) в повседневном кодинге можно конструировать из очень небольшого числа строительных блоков, микро-паттернов (на курсах для начинающих, впрочем, делаю на этом особый акцент уже не один год).
"Storyboard Programming" разработана в Массачусетском технологическом институте нашими с вами друзьями. Автоматическая генерация кода, реализующего операции над различными структурами данных (чем мы на курсах по АСД занимаемся вручную) на основании картинок, которые программист рисует мышкой "интуитивно" (квадратики и стрелочки) и добавляет примеры ввода-вывода.
Тут есть видео, как это происходит.
А брат этого товарища занимается разработкой фреймворка синтеза программ, который оптимизирует сам себя, и умеет генерировать formula simplifiers под конкретные предметные области.
В СильныхИдеях сделаю небольшой разбор этой темы, которая в наших прозаических целях очень важна прежде всего тем, что, как показано математически, даже сильно сложные функции (логику) в повседневном кодинге можно конструировать из очень небольшого числа строительных блоков, микро-паттернов (на курсах для начинающих, впрочем, делаю на этом особый акцент уже не один год).
Доктор философии скрестил ежа с ужом Питон с Лиспом. Получилось очень забавно.
Фишка из web3 — как организовывать журналирование без, например, SS-таблиц или LSM-деревьев, когда ноды могут покидать сеть и возвращаться в неё произвольно по своему усмотрению: брать цепочку proof-of-work в качестве целостной и доказанно корректной информации о том, что произошло, пока узла не было в онлайне.
...то странное чувство, когда как обычно внезапно закончились минуты на каршеринг GitLab CI/CD, а оплата долларами теперь традиционно сильно усложнена, и в результате вся система у знакомых пацанов встала почти намертво )))
Остаётся импортозамещённый cicd яндекс, причём они даже вроде с GitLab как-то совместимы, хотя там честно говорится, что "Пайплайн CI/CD сложно применять для больших и сложных монолитных систем". Так CI/CD как раз и нужны именно для таких систем в первую очередь )
Маленькие и несложные монолиты полезно как раз вручную обслуживать.
Остаётся импортозамещённый cicd яндекс, причём они даже вроде с GitLab как-то совместимы, хотя там честно говорится, что "Пайплайн CI/CD сложно применять для больших и сложных монолитных систем". Так CI/CD как раз и нужны именно для таких систем в первую очередь )
Маленькие и несложные монолиты полезно как раз вручную обслуживать.
Многострадальный Python превратили ещё и в функциональный язык.
coconut-lang.org
Coconut Programming Language
Simple, elegant, Pythonic functional programming.
Задачка, которую 99% гуманитариев решают правильно, а 99% программистов ошибаются.
Строка "x+(x-x)+x" палиндром?
(никакого подвоха в плане кодировок символов и т.п.)
Спойлер:нет .
Строка "x+(x-x)+x" палиндром?
(никакого подвоха в плане кодировок символов и т.п.)
Спойлер:
"Top Competitive Programmer vs. LeetCode's HARDEST Questions" )))))
"Top Competitive Programmer vs. FAANG Interview Questions" тоже хорошо.
Чем чище (в буквальном смысле) ваше вычислительное мышление, чем больше в нём абстракций и математики, тем легче вам будет справляться с детским садом собеседований, даже с незнакомыми темами, просто потому что они будут для вас "конструктивно" просты.
А вот стиль кодирования у парнишки совсем слабенький, у меня ребята после начального курса "28 задач" такой кривой код уже не пишут. Поэтому к его рекомендациям за пределами спортивного программирования рекомендую относиться с большой опаской :)
"Top Competitive Programmer vs. FAANG Interview Questions" тоже хорошо.
Чем чище (в буквальном смысле) ваше вычислительное мышление, чем больше в нём абстракций и математики, тем легче вам будет справляться с детским садом собеседований, даже с незнакомыми темами, просто потому что они будут для вас "конструктивно" просты.
А вот стиль кодирования у парнишки совсем слабенький, у меня ребята после начального курса "28 задач" такой кривой код уже не пишут. Поэтому к его рекомендациям за пределами спортивного программирования рекомендую относиться с большой опаской :)
YouTube
Top Competitive Programmer vs. LeetCode's HARDEST Questions
A top competitive programmer from the Codeforces/CodeChef realm (with almost zero prior interview experience) takes on the hardest questions known to LeetCode to find out... how good is competitive programming, really? Is it enough to dominate even the hardest…
Между прочим, интерфейс AutoCloseable из Java 7, методы наподобие File.open в Ruby, паттерн RAII в Rust и C++, и даже хаскелевская bracket -- это всё один и тот же мета-паттерн, впервые реализованный как макро with-open-file в Common Lisp в 1980-х годах.
Разбираем его в очередном материале в СильныхИдеях.
Разбираем его в очередном материале в СильныхИдеях.
Hazel is a live functional programming environment that is able to typecheck, manipulate, and even run incomplete programs, i.e. programs with holes.
Вот это действительно Наука, а не эти ваши кококопилоты )))
Вот это действительно Наука, а не эти ваши кококопилоты )))
Будущее редакторов для программистов уже тут: tylr.fun
Когда вы разрабатываете ТЗ для некоторой системы, есть обязательные мета-требования, подходящие практически к любой предметной области:
- пользователям должны быть везде доступны undo/redo;
- "пакетные" операции на клиенте ("автоматизация" пользовательской работы: макро, настраиваемые хоткеи....);
- управляемая сборка мусора;
- создание моментальных снимков состояния системы (условный сэйв/лоад в любой момент времени, а не то что в автосимуляторах, когда во время гонки невозможно сохраниться);
- синхронизация состояний;
- ребейзинг по истории изменений с возможностью просмотра дифов.
Если вы их не добавите, это значит, что вы создаете софт, которым сами не захотите пользоваться.
- пользователям должны быть везде доступны undo/redo;
- "пакетные" операции на клиенте ("автоматизация" пользовательской работы: макро, настраиваемые хоткеи....);
- управляемая сборка мусора;
- создание моментальных снимков состояния системы (условный сэйв/лоад в любой момент времени, а не то что в автосимуляторах, когда во время гонки невозможно сохраниться);
- синхронизация состояний;
- ребейзинг по истории изменений с возможностью просмотра дифов.
Если вы их не добавите, это значит, что вы создаете софт, которым сами не захотите пользоваться.
Время срочно записывать Carbon в свои скиллы :)
Хорошая новость, что симпатичный курс HighLoad Junior
о котором я говорил недавно: "От организаторов конференции Highload++, и я его раньше рекомендовал. Однако, сервис по обучению highload от мастеров highload сам по себе оказался крайне ненадёжным и очень хрупким :)"
вроде бы ожил: пришла рассылка, в которой (вроде бы) все активные ссылки на материалы наконец-то рабочие.
Правда, highload.guide/blog/ слегка зависает, но это же мелочи для русского хайлоада? :)
о котором я говорил недавно: "От организаторов конференции Highload++, и я его раньше рекомендовал. Однако, сервис по обучению highload от мастеров highload сам по себе оказался крайне ненадёжным и очень хрупким :)"
вроде бы ожил: пришла рассылка, в которой (вроде бы) все активные ссылки на материалы наконец-то рабочие.
Правда, highload.guide/blog/ слегка зависает, но это же мелочи для русского хайлоада? :)
Есть ли перспективы у no-code? Нет, абсолютно. Потому что в этой темке не бывает никаких революционных изобретений. Это просто поиск компромиссов между универсальностью и простотой UI, стараясь угодить выбранной рыночной нише. Вдобавок за этим стоит, очевидно, достаточно объёмный код, и этот легаси-хвост сильно затрудняет быструю подстройку под нужды разных клиентов. А агрессивная монетизация даёт в основном саморазрушительный эффект.
Расходимся, в no-code вообще не на что смотреть.
А вот low-code, где есть хотя бы немножечко кодинг, перспективно однозначно. Причём чем визуальнее тут программирование, тем лучше, как в scratch или squeak например -- потому что сегодня это направление очень сильно взлетает и в профессиональной разработке, на моём новом формате занятий "hard work" будем это обязательно изучать.
Расходимся, в no-code вообще не на что смотреть.
А вот low-code, где есть хотя бы немножечко кодинг, перспективно однозначно. Причём чем визуальнее тут программирование, тем лучше, как в scratch или squeak например -- потому что сегодня это направление очень сильно взлетает и в профессиональной разработке, на моём новом формате занятий "hard work" будем это обязательно изучать.
scratch.mit.edu
Scratch - Imagine, Program, Share
Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations.
Если вы не можете записать что-то на русском языке, вы не сможете это запрограммировать.
Дико уважаю:
I started BPS.space almost 7 years ago in the fall of 2015 with the goal to propulsively land a model rocket. I had no background in aero, EE, coding, etc so it took a lot of trial and error, but today I finally stuck the landing
I started BPS.space almost 7 years ago in the fall of 2015 with the goal to propulsively land a model rocket. I had no background in aero, EE, coding, etc so it took a lot of trial and error, but today I finally stuck the landing
This media is not supported in your browser
VIEW IN TELEGRAM