TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 869 подобни публикации

Общо глобално търсене

Ben Edgington | 𝕏🧵 RT @abcoathup: FAQ ⌛️@ethdevnews limited run Weeks not months. Unless I find sponsors/grants. @optimism's RetroPGF 2 grant for @weekinethnews pays my rent and feeds my family. But after living off that for years (thanks @evan_van_ness🙏) it is finally coming to the end. I want to work for Ethereum forever but also need to eat. 🤖 Can't AI do ethdevnews Not yet, but eventually. Currently news gathering is manual (twice a day, 7 days a week), with manual curation. I use AI for quick fact checking, but my wife is the best proof reader. If your AI news just points to where I have curated updates on @EthMagicians or assigned EIP/ERC numbers, then it is still me doing manual work (though happy for AI to takeover these unpaid tasks). 🧑‍💻@abcoathup job hunting Tech writing/community likely suits me best. I'm more of an AI prompter than a software engineer these days but would consider testing. I want remote async & family friendly. I’m in Melbourne Australia. Travelling (family commitments) and public speaking (autistic) are both hard for me. Resume and writing samples available. --- Thanks friends for all the support. 🙏 ~ ₿izFeed#⃣:#dev#ETH

Hashtags

vitalik.eth | 𝕏🧵 RT @liron: Doom Debate with @VitalikButerin has dropped: Will “d/acc” Protect Humanity from Superintelligent AI? Vitalik is both a hardcore techno-optimist and builder, and someone willing to seriously consider AI regulation and coordination mechanisms. He coined the term "d/acc'" – defensive, decentralized acceleration – as a middle path between uncritical AI acceleration and total pause scenarios. We debate the tractability of AI alignment, whether approaches like d/acc would actually work when superintelligence arrives, and why he thinks a pluralistic world of competing AIs might be safer than a single aligned superintelligence. The crux of our disagreement is that I think we're heading for a "plants vs. animals" scenario where AI will simply operate on timescales we can't match, while Vitalik believes we can maintain agency through the right combination of defensive technologies and institutional design. Finally, we tackle the discourse... View original post ~ ₿izFeed#⃣:#dev#ETH

Hashtags

‌Ben Edgington | 𝕏🧵 RT @ethresearchbot: New post on EthResear.ch! Integrating 3SF with ePBS, FOCIL, and PeerDAS By: - Luca Zanolini - Roberto Saltini 🔗ethresear.ch/t/22909 Highlights: - The integration of 3SF with ePBS, FOCIL, and PeerDAS aims to enhance blockchain efficiency and security by addressing transaction inclusion and proposer-builder separation. - The proposed system operates in slots, allowing all validators to vote on blocks every slot, which simplifies the process and removes the need for epochs or committees. - FOCIL ensures that important transactions are included in blocks by requiring proposers to follow inclusion lists created by a committee of validators, preventing censorship. - ePBS formalizes the separation of roles between block builders and proposers, allowing for a more competitive and transparent block construction process. - The research highlights the importance of maintaining core properties of 3SF, such as reorg resilience and transaction inclusion, even when integrating new mechanisms. ELI5: This research explores how to combine a new protocol called 3SF with other proposals to improve blockchain performance and security. It looks at how these systems can work together without causing problems, ensuring that transactions are included fairly and efficiently. ~ ₿izFeed#⃣:#dev#ETH

Hashtags

Ben Edgington | 𝕏🧵 RT @0xzak: I've been in crypto for over 10 years and I’ve Never been hacked. Perfect OpSec record. Yesterday, my wallet was drained by a malicious @cursor_ai extension for the first time. If it can happen to me, it can happen to you. Here’s a full breakdown. 🧵👇 ~ ₿izFeed#⃣:#dev#ETH

Hashtags

vitalik.eth | 𝕏🧵 A good book, worth reading to understand the basic case for why many people, even those who are generally very enthusiastic about speeding up technological progress, consider superintelligent AI uniquely risky https://twitter.com/ESYudkowsky/status/1922710969785917691 ~ ₿izFeed#⃣:#dev#ETH

Hashtags

12•••5•••89101112•••15•••20•••25•••30•••35•••40•••45•••50•••55•••60•••65•••70•••7273