Инструменты для разработки в Windows 3.11, Windows 95

Разработка приложений под ретро системы
pahan
Advanced Member
Сообщения: 5372
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.
Благодарил (а): 2 раза
Поблагодарили: 34 раза

Вклад в сообщество

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение pahan » 09.02.2024,11:35

Интересная тема.. Разработчика обычно не интересует, как его код будут понимать, если это не образовательный проект.
Что, госконтора? Или любительский проект из одного человека, выкинутый на гитхаб, когда надоело? Потому что в приличном месте с таким подходом пора бы на увольненье.
Повторюсь - программист это не художник (и даже не сапожник), а рабочий на конвейере. И так последние лет 35. И его главная задача - писать код, легко понятный другому человеку. Потому что в проекте ты не один, а много людей занимаются одним и тем же параллельно, и почти каждый из них занимается не только этим проектом, а делит своё время между несколькими, и в каждом из ним могут оказаться куски кода, написанные 10+ лет назад, про которые спросить "а почему именно так" физически не у кого, а их в худшем случае придётся или реверсить или переписывать полностью с нуля.

pete0
Newbie
Сообщения: 83
Зарегистрирован: 15.07.2023,14:02
Откуда: Кинешма
Благодарил (а): 2 раза

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение pete0 » 09.02.2024,12:09

Квазигос:)
Но я вот вспоминаю параллельную "команду" разработчиков внутренней КИС на Дельфи, с десяток человек, с техническим писателем, тестировщиком - казалось бы, именно им актуально единообразие подходов, интерфейсов, комментирование, строгое следование алгоритмизации при разработке.
Ага, как же, я слышал множество их прений и все они художники, а не ремесленники:)

rkurbatov
Advanced Member
Сообщения: 570
Зарегистрирован: 14.07.2023,01:06
Откуда: Львов
Благодарил (а): 31 раз
Поблагодарили: 30 раз

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение rkurbatov » 09.02.2024,14:41

pahan писал(а): 09.02.2024,11:35 И его главная задача - писать код, легко понятный другому человеку.
Даже если ты на проекте один, ты забываешь что это и зачем это спустя очень непродолжительное время. Полгода-год - ты забываешь логику напрочь, особенно если пишешь много или переключаешься между проектами. И чаще всего именно там, где кажется - ну схалтурю, ничего не будет - бывает. Это место оказывается слабым звеном, несет баги или требует кучу времени на переписывание.

Аватара пользователя
shtirlitzz
Newbie
Сообщения: 72
Зарегистрирован: 08.02.2024,02:05
Откуда: Сортавала

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение shtirlitzz » 16.09.2024,10:47

Open Watcom С, Borland C++, первые версии Visual C++, MASM, VB 3.0. Смотря какие цели преследуются, а там и выбор уровня языка выбирается имхо.
>> Amiga A1200 x2 / Atari 800XE <<

stoopedm
Newbie
Сообщения: 60
Зарегистрирован: 24.12.2018,08:56
Благодарил (а): 1 раз
Поблагодарили: 4 раза

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение stoopedm » 17.09.2024,00:52

Еще для Windows 3.xx есть QuickC :)

И еще вот ссылки на тему программирования под 3.xx, интересные на мой взгляд
https://yeokhengmeng.com/2019/12/buildi ... ck-client/
https://dheinemann.com/win16-programming-resources/
https://archive.org/details/programming ... -31-3rd-ed

leon_pro
Full Member
Сообщения: 226
Зарегистрирован: 13.05.2020,01:22
Откуда: Санкт-Петербург

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение leon_pro » 05.01.2025,21:35

froller писал(а): 08.02.2024,18:15 Так что быстрый код часто ужасен.
Да, встречал и такое. Более громоздкй кусок кода оказывается самым быстрым, народ изгаляется как может.
Особенно когда важны каждые пол-процента скорости.
Иногда перепишешь алгоритм под SIMD(SSE/NEON), и читать код становится гораздо сложнее...
А еще есть баги в компиляторах, которые иногда обходить приходится...
Так что да, краота - не единственный критерий :)

Аватара пользователя
froller
Advanced Member
Сообщения: 396
Зарегистрирован: 07.02.2020,17:47
Откуда: Ленинград
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение froller » 14.01.2025,02:54

rkurbatov писал(а): 08.02.2024,20:15 Отделяй главное от деталей, пиши комментарии в неочевидных местах, называй переменные и функции так, чтобы не надо было писать комментарии, структурируй - но как мало кто им следует, увы.
Недавно видел в плюсовом коде (многократно):

Код: Выделить всё

typedef bool MYBool;

...

MYBool Class::Method(int a, int b) {
  ...
   // Так надо!
  __asm mov eax,100
  
  return (a == b);
}
Уберешь эту дичь и релизная сборка перестанет работать. Вот и думай после этого, кто дурак. :))
В root мне логи!!

Mov AX, 0xDEAD
Advanced Member
Сообщения: 540
Зарегистрирован: 14.04.2023,18:15
Откуда: Ташкент, УзССР
Поблагодарили: 20 раз

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение Mov AX, 0xDEAD » 14.01.2025,06:59

froller писал(а): 14.01.2025,02:54

Код: Выделить всё

typedef bool MYBool;

...

MYBool Class::Method(int a, int b) {
  ...
   // Так надо!
  __asm mov eax,100
  
  return (a == b);
}
Уберешь эту дичь и релизная сборка перестанет работать. Вот и думай после этого, кто дурак. :))
Тип bool из функций возвращается в AL и перезатрет EAX=100, реально дичь.
Единственное что приходит на ум - включена глобальная оптимизация по всему проекту и есть другие ассемблерные вставки в коде, тем самым мы даем знать оптимизатору что регистр eax может изменится этими вставками

Аватара пользователя
froller
Advanced Member
Сообщения: 396
Зарегистрирован: 07.02.2020,17:47
Откуда: Ленинград
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение froller » 14.01.2025,18:18

Mov AX, 0xDEAD писал(а): 14.01.2025,06:59 Тип bool из функций возвращается в AL и перезатрет EAX=100, реально дичь.
Это Win32, так что там скорее всего весь EAX используется для возврата.
Не знаю почему, но если не потрогать EAX перед возвратом, то оптимизатор с ума сходит.
Могу предположить, что он смотрит на EAX, видит, что там 0, и если функа возвращает `false`, то он просто выкидывает к чёртовой матери весь код связанный с `return`, что не всегда можно делать.
Баги в компиляторах такие баги в компиляторах.

P.S. благо при портировании на Win64 все это выкинули нафиг вместе с ассемблерными вставками, которые, как известно, запрещены в Win64.
В root мне логи!!

Mov AX, 0xDEAD
Advanced Member
Сообщения: 540
Зарегистрирован: 14.04.2023,18:15
Откуда: Ташкент, УзССР
Поблагодарили: 20 раз

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение Mov AX, 0xDEAD » 15.01.2025,06:47

froller писал(а): 14.01.2025,18:18
Mov AX, 0xDEAD писал(а): 14.01.2025,06:59 Тип bool из функций возвращается в AL и перезатрет EAX=100, реально дичь.
Это Win32, так что там скорее всего весь EAX используется для возврата.
В Visual C++ bool это всегда регистр AL (Visual Studio ...-2008-2010), как возврат из функций, так и сравнение с чем-то, в структурах тоже хранится как один байт. Даже смешанный C/C++ код типа if (bool == BOOL) "на бумаге" тоже будет работать, так как bool будет расширен в более широкий тип перед сравнением.
Видимо действительно баг компилера в определеной ситуации.

Qulif
Advanced Member
Сообщения: 617
Зарегистрирован: 15.09.2019,19:54
Откуда: Russia

Инструменты для разработки в Windows 3.11, Windows 95

Сообщение Qulif » 10.03.2025,20:31

Скажите а на си с крестами пишут или изголяются ??? Причем изголяются все и разработчики компиляторов и программисты. В телеге в группах по си с крестами все заваялено вопросами что выведет этот код ... накой так писать если не очевидно что делает код ?? Ребусокодирование ...
Non-System disk or disk error replace and strike any key when ready

Ответить