Обновить
512K+

Программирование *

Искусство создания компьютерных программ

1 128,04
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Swift на Apple II. Часть 1: язык, компилятор и байткод

Время на прочтение9 мин
Охват и читатели6.4K

Swift — язык, на котором пишут приложения для iPhone и Mac. Apple II — 8-битный компьютер 1977 года с процессором на 1 МГц, где под всю вашу программу остаётся ровно 40 704 байта. Автор оригинала соединил эти два полюса и собрал SwiftII: работающее подмножество Swift, которое компилируется в байткод и исполняется виртуальной машиной прямо на «яблочной» восьмибитке — по той же идее, по которой в 1979-м на Apple II приносили Pascal. В первой части — как устроены язык, однопроходный компилятор и байткод и на какие жертвы пришлось пойти, чтобы код всё ещё читался как Swift.

Читать далее

Новости

Как оценивать эффективность разработки

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.5K

Меня зовут Антон Омельяненко, я Head of Software Development в EXANTE. Менеджер управляет командой так, чтобы она приносила бизнесу результат. Чтобы понимать, насколько хорошо люди справляются с задачами, ему нужны данные о работе и система оценки. С разработкой это сложнее, чем кажется.

В статье я разберу три вопроса: почему классические метрики не подходят для оценки эффективности разработчиков, как измерять её правильно и что делать, если вам кажется, что сотрудник работает не только на вас.

Читать далее

Kotlin: про Structured Concurrency, CoroutineContext и CoroutineScope

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.5K

Разбираемся с Kotlin Corouitines - какие идеи заложены и чем отличается CoroutineContext от CoroutineScope

Интересно?

Обработка ошибок и исключений в RPG на IBM i

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели5.2K

Продолжение цикла статей "что такое RPG и как с ним работать.

Предыдущие статьи
Современный RPG — что может и зачем нужен
Способы работы с БД DB2 в языке RPG на платформе IBM i

Читать далее

Графический фреймворк «Арго»

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели6.4K

Данная статья содержит обзор графического фреймворка “Арго”, предназначенного для быстрой разработки полноценного пользовательского интерфейса для управления приложениями. Это кроссплатформенное решение, которое может работать на различных операционных системах и аппаратных платформах, и, прежде всего, на устройствах в условиях очень ограниченных ресурсов по быстродействию процессора и оперативной памяти. Это полностью отечественная разработка, практически независимая от зарубежных продуктов и Open Source разработок.

Читать далее

База встала под нагрузкой: как найти, кто кого блокирует в PostgreSQL

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.3K

CPU и диск свободны, а сервис уже задыхается: транзакции ждут блокировок, соединения заканчиваются, база перестаёт отвечать.

Разберём, как найти корневой процесс в PostgreSQL, отличить длинную транзакцию от конкуренции за строки и остановить каскадный сбой.

Читать далее

Блокчейн глазами разработчика: append‑only база данных, за запись в которую платят

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.4K

Слово «блокчейн» испорчено маркетингом. За десять лет вокруг него наросло столько «революций», «иксов» и «цифрового золота», что нормальный разработчик при его звуке закрывает вкладку — и я его понимаю.

Проблема в том, что за хайпом прячется инженерно интересная конструкция. Если убрать из блокчейна всё маркетинговое и посмотреть на него глазами человека, который каждый день работает с Postgres, Kafka и git, останется знакомая до боли вещь: реплицированный append‑only лог, в котором состояние — это проекция, а запись — платная.

В этой статье я разберу блокчейн именно так: без «крипты», через аналогии с инструментами, которыми вы пользуетесь каждый день. А в конце мы подключимся к реальной сети из десяти строк TypeScript и пощупаем этот лог руками.

Читать далее

DB-клиент OpenIDE: от подключения к базе до EXPLAIN и экспорта данных

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.5K

Когда нужно проверить запись в таблице, выполнить запрос из логов или понять, почему база выбрала странный план, разработчик обычно вспоминает про DBeaver, pgAdmin или DataGrip. Все три варианта решают задачу, но по-разному.

1. DBeaver и pgAdmin остаются отдельными программами: со своими окнами, подключениями и настройками. 
2. DataGrip можно получить как в отдельной IDE, так и внутри IntelliJ IDEA Ultimate, WebStorm, GoLand и других IDE от JetBrains.

Но сегодня путь от скачивания до работающей IDE с лицензией далёк от простого и легального.

OpenIDE это третий вариант: полноценный DB-клиент уже входит в состав IDE. Через него легко подключиться к базе, посмотреть ее структуру, написать SQL с комплишенами и подсветкой синтаксиса, запустить EXPLAIN, править и выгружать данные.

Читать далее

Отслеживание запуска приложения в Spring

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.2K

Почему Spring-приложение запускается медленно, и на каком именно этапе оно тупит?

В новом переводе от команды Spring АйО разбираемся, как заглянуть внутрь процесса создания контекста и отследить инициализацию бинов.

Читать далее

Необратимая операция: как печатать чек, если непонятно, напечатался ли он

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.2K

Фискальный накопитель печатает чек — и связь обрывается до того, как пришёл ответ. Напечатался он или нет, узнать неоткуда: обе ситуации выглядят для сервиса одинаково. Повторить вслепую — риск юридически значимого дубля, не повторять — продажа без чека. Разбираю, как это решалось в облачной фискализации на сотни миллионов чеков в сутки: отдельное состояние «результат неизвестен», сверка с архивом накопителя по собственному идентификатору в реквизите чека, блокировка слота вместо продолжения наугад — и почему за корректность пришлось заплатить отказом от жёсткой временной гарантии. Первая часть из шести.

Читать далее

Чему десять лет в разработке научили меня о технологиях

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.1K

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

Читать далее

Я собрал 33 ИИ-агента на одном движке. Показываю, как устроены пять из них

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели9.7K

За последний год я собрал 33 ИИ-агента. Шахматный тренер для ребёнка, помощник по учёбе, ассистент для жены, тьюторы образовательных программ, боты для металлургического холдинга и энергетической компании, внутренние агенты отдела продаж и CRM.

Все они работают на одном движке. Один и тот же Docker-образ, одна и та же кодовая база. Форков ядра — ноль.

Различаются они ровно одним: где у каждого проходит граница между тем, что считает код, и тем, что говорит модель. Это и есть содержание всей работы. Не промпт-инжиниринг, не выбор модели, не RAG. Граница.

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

TL;DR

Читать далее

Бенчмаркая Enumerable.Chunk: почему батчей меньше, а проход до ×2,7 дольше

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.5K

Chunk делит коллекцию на массивы — одна строка кода. Но есть размер чанка, после которого он замедляется в разы при тех же данных и той же памяти. А на массиве и на List<int> внутри разный код, и в самой строке этого не видно.

Читать далее

Ближайшие события

Как PVS-Studio улучшает качество embedded-проектов

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели9.3K

Embedded-разработка отличается множеством уникальных настроек, компиляторов и систем сборки. А при использовании стандартных методов анализа могут возникать сложности. Для решения этой проблемы PVS-Studio предоставляет специально разработанный механизм. Давайте узнаем о нём больше и посмотрим, как его можно применять на практике.

Читать далее

Почему слабым местом кредитного конвейера может оказаться не только ставка, но и плохой OCR

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7K

Привет, Хабр! Кредиты и все, что с ними связано – тема для многих весьма чувствительная. Мы в Smart Engines выступаем за то, чтобы сделать самые раздражающие процессы удобными и быстрыми. И в этом смысле распознавание документов – это редкий пример технологии, где интересы банка (сократить издержки), сотрудника (меньше рутины) и клиента (не ждать решение неделями) действительно совпадают. Под катом рассказываем, как автоматическое распознавание документов может трансформировать процесс кредитования в банках и как такие технологии становятся ключевым звеном кредитного конвейера.

Читать далее

Kazry — новая кусочно‑заданная активация

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8K

Привет, Хабр, в этой статье я хочу представить новую функцию активации для нейронных сетей под названием Kazry, которая по результатам тестов обошла SiLU.

Читать далее

Как мигрировать 1 млн строк кода с одного языка на другой за 2 недели

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели9.4K

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

За последний месяц отдельные разработчики Anthropic с помощью Claude Fable 5, Claude Opus 4.8 и dynamic workflows перенесли десять проектов объемом от десятков до сотен тысяч строк кода. В этой статье мы разберем два примера и лучшие практики, сформировавшиеся в ходе этих проектов.

Джарред Самнер, сооснователь Bun и технический специалист Anthropic, использовал Claude Code, чтобы перенести Bun с Zig на Rust. Менее чем за две недели было создано миллион строк кода. До слияния ветки 100% существующих тестов Bun проходили в CI. После слияния обнаружилось 19 регрессий, все они уже исправлены. В июне версия на Rust вошла в состав Claude Code.

Майк Кригер, один из руководителей Anthropic Labs, за выходные перенес кодовую базу на Python в 165 000 строк TypeScript. В процессе работали сотни агентов, использовались восемь контрольных этапов, три раунда состязательного ревью и финальная проверка, которая сравнивала вывод каждой команды с результатом оригинальной версии на Python.

Новые возможности Claude Code меняют экономику давно откладываемых проектов. Ниже описан процесс из шести шагов, который мы теперь используем, он основан на выводах из этих миграций.

Читать далее

VK Security Gate: наша платформа для разработчиков

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7K

Security Gate — это наша внутренняя AppSec-платформа, объединяющая инструменты и практики для проверки безопасности кода, зависимостей и других компонентов разработки. Платформа помогает находить потенциальные проблемы безопасности, приоритизировать результаты сканирования и встраивать проверки в привычный процесс работы с кодом.

В статье разберём, из чего состоит Security Gate, как устроены приоритизация находок и интерфейс и какие возможности доступны разработчикам.

Читать далее

Лень, Modbus и ИИ: как я сделал инструмент, которого мне не хватало на пусконаладке

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.1K

Когда я работал инженером АСУ ТП, мне часто приходилось проверять связь с устройствами по Modbus. Существующие утилиты помогали, но почти в каждой чего-то не хватало. Спустя несколько лет я вернулся к старой идее и с помощью ИИ-инструментов разработал ProtoLink — простой локальный клиент для Modbus TCP и RTU. Рассказываю, как появился проект, что он уже умеет и в какую сторону будет развиваться дальше.

Читать далее

React Update Lifecycle: что происходит при обновлении компонента

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели6.3K

В этой статье последовательно разобран полный цикл обновления React: от Virtual DOM до внутреннего устройства Fiber Reconciler.

Разобраться в жизненном цикле React