Pull to refresh
16K+
172
Евгений@JordanCpp

Разработчик

35,5
Rating
153
Subscribers
Send message

Эта клавиатура мощнее моего ноутбука:)

До чего дошел прогресс.

Что у автора в голове, если он для статьи указал хаб C++?

В С++ тоже ключевые слова на латинице, шах и мат:))

Ландон из тхе кэпиталл оф грейт бритень:))

Сначала прочитал как РПЦ, думал ничего себе прогресс:)

Да я собираю только 32 битный код без расширений и sse. Шаблоны и новые фичи транслируются в стандартные x86 инструкции.

Я просто компилятором msvc 2026 создаю уже оптимизированные obj файлы. А линкер лишь компанует все в exe.

Точно помню информацию, что старые mac os как раз использовали pascal для разработки и довольно широко. После чего со временем перешли на objective C.

В чертогах памяти, вспоминается что использование PASCAL как пример

long FAR PASCAL WndProc ( HWND hwnd, UINT msg, UINT wParam, LONG lParam ) 

использовали, не потому, что первые версии были на pascal, а потому, что это ускоряло код. Откуда эта информация, не помню.

Ага помним.

// helloapp.cpp : Minimal MFC Windows app.
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// WinHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include <afxwin.h>

// Define a window class derived from CFrameWnd
class CHelloWindow : public CFrameWnd
{
public:
	CHelloWindow()
		{ Create(NULL, "Hello World!", WS_OVERLAPPEDWINDOW, rectDefault); }
};

// Define an application class derived from CWinApp
class CHelloApp : public CWinApp
{
public:
	virtual BOOL InitInstance();
};

// Construct the CHelloApp's m_pMainWnd data member
BOOL CHelloApp::InitInstance()
{
	m_pMainWnd = new CHelloWindow();
	m_pMainWnd->ShowWindow(m_nCmdShow);
	m_pMainWnd->UpdateWindow();
	return TRUE;
}

CHelloApp HelloApp;  // HelloApp's constructor initializes and runs the app 

Не сказал бы, что игрушка. Можно писать не многопоточные программы, игры разной сложности, можно использовать динамическую линковку к dll,so. Это будет работать.

Вторым шагом можно сделать модули для SDL 1.2 и SDL3 для новых и старых систем. В модулях загружать через GetProcAddress.

Создать модуль с единым api который бы вызывал данные модули в зависимости от системы. Доделать STL.

И в итоге можно писать один код сразу для всех новых и старых систем на современном С++ 23. Пока без исключений, так как пока для меня их добавление, намного сложнее, чем написать основные библиотечные фичи и контейнеры.

Допустим даже если поможет, а толку то. Безопасная, но тормозная, неудобная, сливающая тоннами информацию о пользователе, за его же деньги. Проблемы с обновлением, оптимизацией, купите ПК с tpm 2.0 и бла, бла, бла.

Ещё поэкспериментирую с поддержкой исключений. Уверен, что решение есть.

Данный подход расширяет программирование под ретро системы. С++ 23 его фичи и использование современных компиляторов хорошо оптимизируют код. Это дополнительная производительность, за которую по сути я не плачу это из коробки. Очень приятно, мне в библиотеке LDL приходилось для софт рендера дублировать работу с разными форматами изображений, с помощью С++ я смогу это упростить и быть уверенным, что все заинлайниться так как буду использовать шаблоны, constexpr.

Я ожидал проблем с манглингом имен, но их нет. Протестировал на дополнительных модулях, классы, доп using'и и компилятор применяет совместимые названия, линкер от vc 6.0 корректно все линкует.

Я это учел, использую winapi которые есть начиная с windows 95.

Для того, что бы не было sse применяю ключи компиляции /arch:IA32

Данные проблемы как раз легко обходятся.

Версия файла, но это не проблема. Проблема в новых API которые используются sв реализации стандартной библиотеки, исключения которые полагаются на новый windows api. Тоже самое с рантайм. Еще сам формат новые версии добавляют дополнительные секции, которые может обрабатывать только новый линкер, который знает только о новой винде.

Я думаю, в linux проблем будет меньше в этом плане. Пока мне не до конца понятная вещь это именно исключения, есть понимание что у каждого компилятора опора на конкретное api и если его подменить, есть шанс что заведется.

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

Возможно в 2030 году выйдет директор Microsoft и скажет, очевидно эксперимент не удался и т.д Но мы приобрели опыт, знания и бла, бла, бла

Information

Rating
227-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик, Разработчик баз данных
Ведущий
SQL
Linux