Как стать автором
Поиск
Написать публикацию
Обновить
1037.19

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

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

Сначала показывать
Порог рейтинга

Вышла вторая редакция проекта PLB (Programming Language Benchmark) по тестированию производительности решения типовых задач на различных языках программирования. В ней измеряется производительность кода для умножения матриц и решения задачи расстановки 15-ферзей, а также дополнительно оценивает поиск решений в игре Судоку и определение пересечений двух массивов.

Код для тестирования PLB написан на 20 языках программирования. Наиболее высокую производительность показала реализация тестовых приложений на языке C (при компиляции в clang). На втором месте оказался язык Zig, на третьем Nim, на четвёртом Mojo. Далее примерно на одном уровне следуют D, Java, JavaScript-платформа Bun и Rust, а после них Go, Crystal и V.

Высокие результаты показали Node.js, Dart, Lua и C#. Хорошие показатели у Java и C# объясняются использованием отдельной стадии JIT-компиляции, в то время как в Dart, Bun, Node.js, Julia, LuaJIT, PHP, PyPy и Ruby3 (YJIT) JIT-компиляция выполняется на лету и затрагивает только часто выполняемый код. JavaScript-платформа Bun заметно обогнала Node.js. Относительно медленными оказались результаты у Julia и Swift.

Наихудшие показатели производительности выявлены у PHP, Ruby, Perl и CPython, при этом производительность PHP оказалась примерно в 4 раза выше, чем CPython.

Дополнение: В реализации на языках Rust, D и Julia внесены оптимизации, которые позволили Rust занять второе место, D - третье, Julia - 7, а V показал лучший результат в nqueen+matmul.

Источник: OpenNET.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии3

Найм в IT превращается в полный бред. И причина очень проста. Этот бред разводится только из за того, что мы используем неправильные инструменты. Так же как и во всём секторе IT.

Сколько можно постить эту картинку?
Сколько можно постить эту картинку?

FB разрабатывает новую технологию для того, чтобы они смогли что-то сделать с бесконечно сложной кодобазой. Внедряют ещё один уроверь абстрации CSS, потому что уже сидят на шести различных уровнях. Твиттеру нужен отдельный фреймворк для улаживания стилей на миллионах различных устройств и их комбинаций. AWS выдумывает очередную систему контейнеризации для того, чтобы управлять десятками тысяч серверов в сотнях дата центрах.

А потом Вася Пупкин, Яваскрипт джун, тащит всё это добро к себе в репозиторий, потому что так делают ведущие компании. Бред! Он делает магазин для автозапчастей!

Тот же ужас творится и в найме. Задача Netflix не нанять человека. У них на каждую вакансию в день приходит по 84 резюме. Их задача - избавиться от кандидатов. Так же как и MS и FB избавляются от кандидатов, а кандидаты безбожно врут, для того, чтобы откусить "запретный плод" "хорошей зарплаты" и "отличной корпоративной культуры", а потом сваливают оттуда через годик-другой.

И какой-нибудь Сергей Константинович, HR менеджер среднего звена, пытается понять, почему это после 200 резюме он не нанял ни одного программиста.

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

Теги:
Всего голосов 33: ↑33 и ↓0+33
Комментарии8

Почему ChatGPT не заменит разработчиков

Часто слышу беспокойство по поводу ИИ, типа «программисты будут не нужны».

Недавно сталкивался с продуктом, рожденным при помощи ChatGPT. У руля ИИ был человек, который очень поверхностно понимал что такое разработка. Он смог довести продукт до рабочего состояния, но ChatGPT захлебнулся на моменте интеграции firebase для регистрации пользователей и внедрения формы оплаты. На внедрение этих фичей человек начал искать реальных разработчиков.

Я посмотрел на исходный код и ужаснулся: 

❗️Код представлял из себя портянку одного React компонента на тысячу строк

❗️GhatGPT взял топовые технологии: Next.js, TypeScript, Tailwind, Versel. Но Tailwind выглядел жестко – это были длинные портянки классов, которые невозможно разобрать

❗️Я уже молчу про нормальный дизайн и UX. ChatGPT делает корявенько, мягко говоря

Создание хорошего продукта – это не просто написать N строчек кода. Часто нужно интегрировать продукт с другими сервисами, продумывать архитектуру, а самое главное – писать масштабируемый поддерживаемый код для людей. Все это не может делать ChatGPT.

Программист нашелся, но вместо двух фич он получил вагон техдолга на старте. 

ИИ будет максимально полезен, когда не нужно будет за ним разбирать, что он нагенерировал. Если он будет делать решения под ключ, то тогда это будет эффективно. А пока такие технологии хороши для проверки гипотез, но дальше работают профи.

***

Подписывайтесь на мой телеграм-канал Вайтишная: пишу честно про IT и про свой опыт

Теги:
Всего голосов 9: ↑6 и ↓3+3
Комментарии1

Три подкаста про frontend на YouTube-канале Cloud.ru Tech 🎧

Всем привет! Сделали небольшую подборку подкастов для frontend-разработчиков (и не только) с нашего YouTube-канала Cloud.ru Tech

🎤 Каков frontend в 2023? 

С Артемом Шовкиным — senior frontend-разработчиком СБОЛ.про обсудили, с чего начать знакомство с WebAssembly, что закидывать в Def Dependencies, может ли ChatGPT заменить разработчика и как правильно готовиться к собеседованиям.

🎤 Почему нужно учить алгоритмы? Правильный frontend

С руководителем группы в Яндекс Маркет Семеном Левенсоном поговорили про то, как поддерживать хороший код на проекте, действительно ли вечный рефакторинг — это плохо, как не надо писать storybook и нужны ли микрофронты.

🎤 Про frontend-разработку и проблемы open source 

Владислав Кибенко — веб-разработчик Yandex Search, рассказал про опыт перехода с backend на frontend, что больше всего бесит в open source, почему курсы — плохой способ попасть в IT, и как бороться со страхом публичных выступлений. 

Подписывайтесь на YouTube-канал Cloud.ru Tech, чтобы быть в курсе IT-трендов.

Что еще полезного есть в блоге:

Теги:
Рейтинг0
Комментарии0

typing.Annotated

Annotated из модуля typing в Python предназначен для добавления метаданных к аннотации. Метаданные, добавленные с помощью Annotated, могут быть использованы инструментами статического анализа или во время выполнения. Во время выполнения метаданные хранятся в атрибуте __metadata__.

from typing import Annotated 

# Синтаксис: Annotated[тип_данных, метаданные]
def say_hello(name: Annotated[str, "this is just metadata"]) -> str:
    return f"Hello {name}"

Логика обработка метаданных зависит от фреймворка или библиотек, в которых используется Annotated. Если логики для обработки метаданных нет, то метаданные игнорируются.

Например, Annotated используется в Pydantic:

from typing import Annotated
from pydantic import Field, TypeAdapter

# Функция Field используется для настройки и добавления метаданных 
# к полям моделей. Field(gt=0) - значит greater than т.е. больше чем 0
PositiveInt = Annotated[int, Field(gt=0)]

# TypeAdapter предоставляет часть функциональности методов экземпляра
# BaseModel в т.ч. валидацию с использованием метаданных из Annotated
ta = TypeAdapter(PositiveInt)


print(ta.validate_python(1))
#> 1
print(ta.validate_python(-1))
#> pydantic_core._pydantic_core.ValidationError:

В первом случае вернёт 1, во втором ошибку валидации т.к. значение должно быть > 0.

Также Annotated используется в FastAPI.

Теги:
Рейтинг0
Комментарии0

Состоялся релиз отладчика GDB 14.1 (первый выпуск серии 14.x, ветка 14.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).

Ключевые улучшения в проекте:

  • кодовая база переведена на использование стандарта C++17. Для сборки GDB теперь необходим компилятор, поддерживающий C++17 (как минимум GCC 9);

  • в индекс добавлена информация о функции main, что позволяет ускорить запуск при использовании с некоторыми большими исполняемыми файлами;

  • прекращена поддержка ОС AIX 4.x, 5.x и 6.x (в качестве минимально поддерживаемой версии AIX заявлен выпуск 7.1);

  • добавлена начальная встроенная поддержка протокола DAP (Debugger Adapter Protocol);

  • добавлена поддержка переменной окружения NO_COLOR;

  • добавлена начальная поддержка целочисленных типов размером больше 64 битов;

  • внесены улучшения в Python API;

  • добавлена поддержка точек остановки, привязанных к отдельным объектам отладки (при отладке нескольких процессов);

  • добавлена функция "$_shell" для запуска команды в командной оболочке и возвращения результата;

  • улучшена поддержка архитектуры AArch64. Добавлена поддержка расширений SME (Scalable Matrix Extension) и SME2;

  • улучшена поддержка языка Ada и спецификации Ada 2022.

Источник: OpenNET.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Ролик для объяснения бумерам основы мема "только эвтаназия"

— Отрефакторим этот код?
— Его нужно его удалить
— Но я могу его переписать...
— Нет-нет, только эвтаназия!

Теги:
Рейтинг0
Комментарии0

Нашел интересную утилиту с открытм исходником для записи скринкастов.

Визуально показывает на экране все нажатые клавиши и их сочетания, включая мышку.
Это незаменимо, когда ты показываешь в скринкасте что-то сложное, что активируется только с помощью горячих клавиш на клавиатуре.

Только Windows.
Лицензия MS-PL

Код на GitHub: https://github.com/Code52/carnac
Скачать с GitHub: https://github.com/Code52/carnac/releases

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Яри Комппа уже давно жалуется, что графические API усложнились и что молодому разработчику будет тяжело в них разобраться.

Впрочем, кому как не ему об этом задумываться? Яри вошёл в мир программирования без высшего образования. Первую работу после армии ему помогла найти победа в конкурсе Assembly1998. (В Технологический университет Эспоо-Вантаа Комппа поступил куда позднее, лишь в 2004 году.)

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

В сентябре этого года Unity Technologies сменила тарифы, испытала волну негодования от разработчиков и была вынуждена пойти на попятную. Но многие задумались: а нужен ли вообще кем-то написанный движок? Почему бы не написать движок самостоятельно?

Комппа достал из загашников одну свою старую картинку. На ней представлен код Hello Triangle, демонстрационной программы для вывода на экран треугольника, для различных спецификаций программных интерфейсов. Яри сравнил шесть API графики: OpenGL 1.x, OpenGL 3, Vulkan и DirectX трёх версий.

Комппа признаёт, что картинка сугубо развлекательная, но тенденция его всё равно пугает.

Полная версия этой картинки по длине выходит за 20 тысяч пикселей.

Теги:
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

После прочтения статьи «Увядает ли ремесло программиста?» и комментариев к ней появилась несколько парадоксальная мысль на эту тему, которую я хотел бы обсудить.

Уже несколько лет назад в дисскуссии услышал хоть холиварную, но в чём-то справедливую фразу о том, что сейчас в этом нашем IT стало намного сложнее, кривая обучения задралась, начальная ступень стала выше и, цитирую, — «от джунов сейчас ожидают объёма знаний сравнимого с тем, что требовали от сеньоров лет 10 назад».

Как и любая хлёсткая фраза правдива она лишь отчасти, но тем не менее, своя доля правды в ней есть.

А теперь смотрим на рассуждения в статье из первого абзаца.

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

А вот джунам придётся несладко.
Начальные ступени становятся ещё выше.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

TeamViewer для Linux-юзеров - sshx

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

Написано, кстати, на Расте.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Только что вышли две библиотеки с одним номером:

  • Spring for Apache Kafka 3.1

  • Spring AMQP (Spring for RabbitMQ) 3.1

Как следует из названия, это нативная поддержка Kafka и Rabbit в Spring.

Подробности — в релиз ноутах на GitHub. Здесь по Кафке, здесь по Рэббиту.

По сути, это минорные обновления и апгрейд до актуального Spring Framework 6.1.

Подробности должны быть в следующем дайджесте.

Теги:
Рейтинг0
Комментарии0

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

Только что вышел Spring Authorization Server 1.2

Это фреймворк, реализующий  OAuth 2.1 and OpenID Connect 1.0 поверх Spring Security.

Подробности — в релиз ноутах на GitHub.
Как им пользоваться написано в документации, но лучше всего изучить конкретные примеры.

Теги:
Рейтинг0
Комментарии0

Unix Time сегодня достиг значения 1700000000 

Счетчик обратного отсчёта есть по ссылке:
https://www.epochconverter.com/countdown?q=1700000000

Давайте уже готовиться к следующему крупному гету: проблеме Y2.038K. Как думаете, это полная ерунда, или что-нибудь серьезно выйдет из строя?

Теги:
Всего голосов 8: ↑7 и ↓1+6
Комментарии3

Приглашаем на митап сообщества Live PHP,
который пройдет в Санкт-Петербурге в четверг, 23 ноября.

? Применение SOLID при разработке на PHP
Эмиль Лимаренко, разработчик

Обновим знания о принципах SOLID на примерах PHP. Подумаем зачем и когда нам это нужно. Разберёмся наконец где заканчивается Dependency Injection и начинается Dependency Inversion.

? ИИ за место крыс
Иван Романов, аспирант лаборатории эволюции органов чувств ИЭФБ РАН

Расскажу о пространственной навигации, а именно, об участниках процесса и об использовании ИИ в научных изысканиях посвящённых этой теме.

? PHP/Symfony/Doctrine: Создание и mapping сущностей, Enums, ValueObjects, etc
Станислав Ракчаев, разработчик

Рассмотрим подходы "проектирования сущностей", варианты создания. Для чего могут быть полезны ValueObjects, Enums и стоит ли их использовать.

? Рефакторинг крупного монолита без архитектуры
Дмитрий Алин, тимлид

Монолит разрабатывался 15 лет, оброс клиентами и является одним из ведущих в своей сфере. Как спланировать, организовать и запустить процессы. Что и как настроть с наименьшим риском для бизнеса.

? Дата и время сбора: 23 ноября 18:30, начало 19:00
? Место встречи: Failover Bar
Санкт-Петербург, 4-я Советская, д.7
? Трансляция: https://youtube.com/live/b1NE20DD2cc

Вопросы можно задать:
- В Telegram-чате Live PHP SPb
- В Telegram-чате Failover Bar

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Microsoft представила выпуск открытой платформы .NET 8, созданной благодаря унификации продуктов.NET Framework,.NET Core и Mono. На основе.NET 8 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT‑устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения.

Сборки.NET SDK 8,.NET Runtime 8 и ASP.NET Core Runtime 8 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 8 поставляется только для Windows. Ветка .NET 8 отнесена к категории LTS и будет сопровождаться до ноября 2026 года. Связанные с проектом наработки распространяются под лицензией MIT.

В состав .NET 8 входит Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI, Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно опубликованы стек для разработки web-приложений ASP.NET Core 8.0, ORM-прослойка Entity Framework Core 8.0 (драйверы имеются, в том числе, для SQLite и PostgreSQL), библиотека WPF 8 (Windows Presentation Foundation), фреймворк Windows Forms 8 для разработки GUI, платформа Aspire 8 для создания приложений Cloud Native, фреймворк MAUI 8 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 12 и F# 8. Поддержка .NET 8.0 и C# 12 включена в свободный редактор кода Visual Studio Code.

Источник: OpenNET.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии3

Поговорим про автоматизацию?

Я Юля, разработчик в команде IDM — комплекса систем, управляющих доступами сотрудников к внутренним ресурсам. Поделюсь мыслями на тему автоматизации.

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

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

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

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

Для меня это еще один пример, когда автоматизация уместна, не отбирает возможность принимать решения, влиять на процессы и результат.

А какие вам встречались примеры автоматизации — дружелюбной и не очень?

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии3

После года разработки представлен новый выпуск реализации языка программирования AWK от проекта GNU — Gawk 5.3.0. AWK был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк языка, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется системными администраторами для выполнения рутинных работ, связанных с разбором различного рода текстовых файлов и генерацией несложной результирующей статистики.

Ключевые изменения в Gawk 5.3.0:

  • проведена работа по обеспечению совместимости с BWK ("The One True Awk");

  • добавлена опция "--csv" для разбора файлов в формате CSV (comma-separated values);

  • добавлена возможность использования escape-последовательностей "\u" для представления многобайтовых Unicode-символов;

  • прекращено использование библиотеки libsigsegv;

  • добавлена поддержка буферизации вывода при указании PROCINFO["BUFFERPIPE"].

Источник: OpenNET.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Топ-3 авторских DevOps/сисадмин-канала

Эта подборка появилась после ручного анализа всех Telegram-каналов (более 50) в тематике DevOps/системное администрирование. Упор в первую очередь сделан на каналы, которые ведутся от первого лица и содержат действительно полезную информацию.

Как оказалось, подобных каналов в телеграм совсем немного. Большая часть это бездушная генерация контента ради контента.

BashDays - смелый проект от действующего девопс инженера, акцент сделан на работу с командной строкой и утилитами в linux. Автор самобытно и с долей юмора рассказывает про то, что в книжках обычно не пишут. Очень клевые кейсы по отладке и дебагу различных проблем. А самое главное всё разжевано до мелочей. Мастхев.

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

Записки админа - больше как копилка знаний про linux утилиты, технологии и системное администрирование. Иногда пролетают действительно крутые штуки, о которых мало кто знает.

Если знаете еще какие-то вменяемые каналы, которые ведутся от первого лица, закидывайте в комментарии.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Вклад авторов