2023-12-02

vak: (Знайка)
"SiMa.ai today announced a new strategic partnership and integration with Supermicro, Inc."

finance.yahoo.com/news/sima-ai-supermicro-announce-partnership-170300570.html

Наши железки для искусственного интеллекта отлично работают в составе серверов Supermicro.
vak: (Default)
Решил на практике проверить идею насчёт лёгкости привинчивания оконного интерфейса Swift к коду Си++. Взял модель калькулятора TI-2500 и быстренько состряпал к ней простой гуй. Благо, SwiftUI позволяет обходиться даже без XCode IDE. Достаточно простого текстового редактора и компиляции из командной строки.

Собирается и запускается это дело так:
git clone https://github.com/sergev/ti-2500-datamath.git
cd ti-2500-datamath/swiftui
swift build
swift run
Вот такая загогулина получается:

Сравниваем с оригиналом:



Исходники главного окошка: ContentView.swift. Всё довольно просто. На самом деле, сильно помогла книжка. Как в том анекдоте: "купил англо-русский словарь и выучил англо-русский язык". 😀  

Собственно стык с Си++, файл ModelProxy.swift:
import Foundation
import ModelCxx

class ModelProxy: ObservableObject {
@Published var display: String = ""

static let shared = ModelProxy()

// Allocate C++ object.
private var calc = Calculator()

// Show initial display contents.
func setup() {
calc.run()
display = String(calc.get_display())
}

// Press key.
func send(_ ch: Character) {
calc.press_key(CChar(ch.asciiValue!))
display = String(calc.get_display())
}
}
Главное типы правильно преобразовать: свифтовый Character в сишный char, а потом сишный std::string в свифтовый String.
vak: (Default)
github.com/antirez/kilo

К вопросу об искусстве красиво программировать. Чувак сваял шедевр: законченный текстовый редактор, в том числе с подсветкой синтаксиса, всего в 1000 строк кода, не используя никаких сторонних библиотек. Даже без curses. Может быть, функционально редактор умеет немного, но тем не менее.

В мою молодость (конец 80-х) всякий уважающий себя программист считал должным написать свой текстовый редактор. Или существенно переделать существующий. И это была хорошая школа. Просто пользоваться редактором VI было слишком скучно. Вадик Антонов сделала свой собственный RED (если не ошибаюсь). У Андрея Чернова (ache) был редактор LE. Лёша Руднев сваял могучий RE на базе примитивного RAND Editor. Я тоже приобщился: переиначил тот же RE на более емаксовский/турбосишный стиль. У Сергея Рыжкова был "рыжактор" - но это ещё на БЭСМ-6.

Если кто желает набить руку и углубить владение языком Си, рекомендую челлендж: взять этот kilo за жабры и сделать из него редактор вашей мечты.
vak: (Default)
В продолжение темы текстовых редакторов. На одном Си свет клином не сошёлся. Вот видео, где товарищ подробно показывает процесс создания текстового редактора на языке Rust с GUI фреймворком Iced.



А вот другой парень, вдохновившись исходниками kilo, переписал его на Rust и сделал про это серию постов в своём блоге: www.flenker.blog/hecto/. Благодарная тема эти редакторы.

Исходники здесь: github.com/pflenker/hecto-tutorial