Названия системных функций

High-level languages programming questions
  • Начнём с того, что нужно утвердить название модуля (новое название, чтобы не было неразберихи, т.е. название - kosSyst.cpp, думаю, что не годится!) на котором будут «завязаны» функции, (константы и прочее) КОС, в котором они будут реализованы. Предлагайте названия такому модулю. Мои предложения имени модуля: KOSystem , KOSapi или что-то в этом роде.

    Далее, названия функций КОС и их аналогов для ЯВУ.
    К примеру возьмём название простой функции PutPixel (из kosSyst.cpp) и приставку «kos_». Вот получится, что название, «прямое» (полное, длинное , «привязанное» к сис.функциям КОС, вписанное в sysfuncr.txt и kol_func.chm ) должно быть: «kos_ PutPixel», а короткое «PutPixel» которое будет применяться в ЯВУ. Думаю это будет логично и понятно. Вот толко надо согласовать приставку «kos_» или какую нибуть другую, так как название kos_ PutPixel уже используется в kosSyst.cpp и не хотелось бы возможных неувязок при использовании нескольких модулей в т.ч. kosSyst.cpp, вместе с основным модулем который мы утвердим.

    Также есть мысля, что должно быть альтернативное (запасное) имя на случай, так или иначе, невозможности использования какого-то имени в какой-то среде программирования. Т. е. опять же утвердить приставку (или несколько) к альтернативному имени, например «a» и/или «a_”, и все прекрасно будем знать и понимать, что если остсутсвует имя PutPixel, то есть альтернативное aPutPixel (или a_PutPixel). Ну для начала давайте решим нужно ли альтернативное имя вообще ? Если да, то сколько и какие приставки должны быть к имени
    Я буду частями выкладывать (скажем по 10 функций КОС) с именами которые предлагаю я, будем обсуждать, редактировать, утверждать их имена. Согласны ? :-) Да и вы тоже выкладывайте свои предложения по названию каких-то функций.
    Пока набирал текст, пришла мысль, вместо приставки, к длинным именам «kos_» использовать приставку «kf” или “fk”, означающие Function KOS, меньше размером, понятна, да и наверняка не используется нигде как «kos_».
    И самое главное. Имена должны быть максимально короткие и понятные. Так как их нужно набирать во время написания программ. Врядли кому понравится название функции подобное «kos_get_size_of_background_image” или что-то в этом роде. :-)
  • DefineAndDrawWindow - Функция 0 - определить и нарисовать окно.
    (Хорошее название было в kosSyst.cpp, уж ничего не скажешь. :-) вот только полное имя надо без приставки «kos_».)
    PutPixel - Функция 1 - поставить точку в окне.
    (Тоже согласен, при условии, что точку можно поставить только на форму, а не на, скажем изображение типа TBitMap или TImage такого вроде нету в КОС ?)
    GetKey - Функция 2 - получить код нажатой клавиши.
    GetSysTime (или всё таки GetSystemClock?) - Функция 3 - получить системное время.
    WriteText - Функция 4 - вывести строку текста в окно
    (в kosSyst.cpp предлагалось WriteTextToWindow, зачем такое длинное ?!)
    Pause - Функция 5 — пауза.
    ReadFileRAM - Функция 6 - прочитать файл с рамдиска
    PutImage (или WriteImage, как правильнее ?) - Функция 7 - вывести изображение в окно
    DefineButton - Функция 8 - определить/удалить кнопку.
    ProcessInfo - Функция 9 - информация о потоке выполнения.
    WaitEvent - Функция 10 - ожидать события
    (в kosSyst.cpp предлагалось WaitForEvent, но я думаю WaitEvent понятней да и короче!)
    Далее будет.
    Не забываем о вопросах поднятых выше, о приставке к длинному имени, о приставке к альтернативному имени о названии модуля с утверждёнными функциями КОС.
  • Для кого все эти функции? Для разработчиков на asm'е? Они дергают mcall/int 0x40 напрямую.
    Если для ЯВУ, то на мой взгляд надо уходить от нативного API в сторону фреймворка.
    Вот такой код вполне можно и на чистом С писать и на С++/Дельфи

    Code: Select all

    #include <Application.h>
    #include <Window.h>
    #include <Button.h>
    
    void buttonExitOnPress(Button *this)
    {
    	Application *app = Application_getInstance();
    	if (app)
    		app->Close();
    }
    
    bool mainWndOnClose(Window *this)
    {
    	if (AlertDialog("Title", "Close?", ALERT_YES_NO))
    		return true;
    	return false;
    }
    
    Window *mainWndCreate(void)
    {
    	Window * mainWnd = Window_init();
    	if (!mainWnd)
    		return 0;
    	
    	Window_setPosition(mainWnd, 100, 100);
    	Window_setExtent(mainWnd, 320, 240);
    	
    	mainWnd->paint   = mainWndPaint;
    	mainWnd->onClose = mainWndOnClose;
    
    	Button *btn = Button_init();
    	if (btn)
    	{
    		Button_setText(btn, "Exit");
    		btn->onPress = buttonExitOnPress;
    		Window_addWidget(btn);
    	}
    	
    	return mainWnd;
    }
    
    int main(int argc, char **argv)
    {
    	Application *app = Application_init();
    	
    	Application_pushDialogWindow(app, mainWndCreate());
    	Application_enterEventDispatcher(app);
    	
    	Application_free(app);
    
    	return 0;
    }
    
  • Veliant wrote:Для кого все эти функции? Для разработчиков на asm'е? Они дергают mcall/int 0x40 напрямую.
    1.А как ты думаешь, если бы были в асме утверждённые макросы и/или процедуры чтобы в вместо mcall/int 0x40 напрямую можно было бы использовать fkDefineAndDrawWindow, fkWriteText, fkGetKey, к чему стремились бы новички пытающиеся, что нибудь написать на асме ? К mcall/int 0x40? Сомневаюсь! Стремились бы к использованию аналогичных и понятных именам процедур и макросов! Да и исходники посимпатичнее были бы , чем с mcall/int 0x40.
    2. (не пойму куда подевалось оригинальное сообщение, видимо автор его удалил) см. сюда: viewtopic.php?f=10&t=370&start=150#p63298 «Есть в KolibriOS Форт система.....» Вот оказывается есть Форт система... не исключено, что будет еще что-то когда-то появляться, почему бы не придерживаться каких-то стандартных и утверждённых имён функций?!... при которых все будут знать и системы писать с такой «привязкой»! Соответственно обычный пользователь, переходя на другую систему (ЯВУ) для КОС, будет знать, что WriteText и GetKey и на Форте и на ещё чём-то, да хоть на самом чёрте :-) будет WriteText и GetKey!
    Veliant wrote: Если для ЯВУ, то на мой взгляд надо уходить от нативного API в сторону фреймворка.
    Ну если ты так думаешь, что это не значит что я так думаю да и другие тоже. :-)
    Veliant wrote: Вот такой код вполне можно и на чистом С писать и на С++/Дельфи
    Посмотри внимательно на длину названий (процедур и прочего), в том коде!... у меня лично, ну нет никакого желания такое «набахкивать» на клавиатуре, вместо короткого и ясного, - GetKey, GetSysTime, WriteText, Pause, ReadFileRAM и т.д.
    Как-то так!
  • CheckEvent - Функция 11 - проверить, есть ли событие, без ожидания.
    BeginDrawWindow - Функция 12 - Подфункция 1 - начать перерисовку окна.
    EndDrawWindow - Функция 12 - Подфункция 2 - закончить перерисовку окна
    (!!!!! Я вот смотрю может правильнее и короче будет BeginDrawForm и EndDrawForm
    Rectangle - Функция 13 - нарисовать прямоугольник в окне
    (DrawBar?!?!? DrawRectangle?!?)
    GetSizeScreen - Функция 14 - получить размеры экрана.
    SetSizeScreen (SetSizeBackScreen?!?! SetSizeBackImage?!?! ) Функция 15, подфункция 1 - установить размер фонового изображения.
    PutPixelBackScreen - Функция 15, подфункция 2 - поставить точку на фоновом изображении. =
    RefreshBackScreen - Функция 15, подфункция 3 - перерисовать фон.
    SetModeBackScreen - Функция 15, подфункция 4 - установить режим отрисовки фона.
    PlaceBlPixBackScreen - Функция 15, подфункция 5 - поместить блок пикселей на фон.
    ?!??!?! - Функция 15, подфункция 6 Спроецировать данные фона на адресное пространство процесса.
    ?!?!? - Функция 15, подфункция 7 Закрыть проекцию данных фона на адресное пространство процесса.
    SaveRAMtoFloppy (или просто RAMtoFloppy - Функция 16 - сохранить рамдиск на дискету.
    GetButton - Функция 17 - получить код нажатой кнопки.
    TerminatProcessFlow (CloseProcessFlow ?!?!) - Функция 18, подфункция 2 - завершить процесс/поток по слоту.
    ActiveWindowFlow - Функция 18, подфункция 3 - сделать активным окно заданного потока.
    GetTactsSec - Функция 18, подфункция 4 - получить счётчик пустых тактов в секунду.
    GetClockRate. - Функция 18, подфункция 5 - получить тактовую частоту.
    SaveRAMtoHDD ( или просто RAMtoHDD ?!?!?) - Функция 18, подфункция 6 - сохранить рамдиск в файл на жёстком диске.
    GetNumbActiveWindow - Функция 18, подфункция 7 - получить номер активного окна.
    Speaker (SetSpeaker !?!?! SetSpeak ?!?!?!) Функция 18, подфункция 8 - отключить/разрешить звук спикера.
    InfoSpeaker - Функция 18, подфункция 8 - отключить/разрешить звук спикера. Подподфункция 1 - получить состояние
    SwitchSpeaker (ModeSpeaker !?!?!?) - Функция 18, подфункция 8 - отключить/разрешить звук спикера. Подподфункция 2 - переключить состояние.
    CloseSysParam = Функция 18, подфункция 9 - завершение работы системы с параметром. =
    FormMinimize ( WindowMinimize?!?!) - Функция 18, подфункция 10 - свернуть окно приложения.
    InfoDiscSubSys - Функция 18, подфункция 11 Получить информацию о дисковой подсистеме.
    VerKernel - Функция 18, подфункция 13 - получить версию ядра.
    WaitFlybackRay - Функция 18, подфункция 14 Ожидать начала обратного хода луча развёртки монитора.
    CursorMouseCentrScreen ( MouseCentrScreen !?!?) - Функция 18, подфункция 15 - поместить курсор мыши в центр экрана
    GetSizeFreeRAM - Функция 18, подфункция 16 Получить размер свободной оперативной памяти.
    GetSizeAvailabRAM - Функция 18, подфункция 17. Получить размер имеющейся оперативной памяти.
    TerminatProcessFlowID - Функция 18, подфункция 18 Завершить процесс/поток по идентификатору.
    GetSpeedMouse - Функция 18, подфункция 19 - получить/установить настройки мыши. Подподфункция 0 - получить скорость мыши.
    SetSpeedMouse - Функция 18, подфункция 19 - получить/установить настройки мыши. Подподфункция 1 - установить скорость мыши.
    GetDelayMouse - Функция 18, подфункция 19 - получить/установить настройки мыши. Подподфункция 2 - получить задержку мыши.
    SetDelayMouse - Функция 18, подфункция 19 - получить/установить настройки мыши. Подподфункция 3 - установить задержку мыши.
    SetPosMouse - Функция 18, подфункция 19 - получить/установить настройки мыши. Подподфункция 4 - установить положение курсора мыши.
    SimulKeyMouse - Функция 18, подфункция 19 - получить/установить настройки мыши. Подподфункция 5 - симулировать состояние клавиш мыши.
  • Для начала не плохо бы ознакомиться с компьютерными терминами в их английском виде
    GetSizeScreen
    GetScreenResolution
    SetSizeScreen
    BackgroundSetResolution
    <name>BackScreen
    Background<name>
    PlaceBlPixBackScreen
    BackgroundBitBlt
    *RAM*
    *RamDisk*
    *Flow*
    *Thread*

    и т.д.
  • GetSizeScreen
    GetScreenResolution
    словечко длиннноватое.... ну может GetScrRes (GetResScr) - вот такое по делу бы было!

    SetSizeScreen
    BackgroundSetResolution
    и тут длинное и начало должно быть ИМХО с "Set", - т.е SetBackRes (SetResBack) что-то в этом роде

    <name>BackScreen
    Background<name>
    ?!?!? т.е. если нормально сократить "Background", до "Back", то
    RefreshBackScreen - Функция 15, подфункция 3 - перерисовать фон. будет RefreshBack ?!
    Ну может и нормально! Согласен! Просмотрю.

    PlaceBlPixBackScreen
    BackgroundBitBlt
    Ну тогда тоже сократить так будет BackBitBlt ( или может BitBltBack)

    *RAM*
    *RamDisk*
    А! Нуда ! ТО Я "ПРОХЛОПАЛ" насчёт диска Ну тогда - RD !

    *Flow*
    *Thread*
    Тоже согласен!

    СПАСИБО! ЗА КОРРЕКТИРОВКУ!
    Думаю, если вместо "Background" делать "BackScr" тоже неплохо бы было чем просто "Back" ?!?

    Пусть пока ничего править не буду может еще кто прокомментировать, что-то захочет.
  • Что лучше в конструкциях названий применять "Window" или "Form" ?
    (Я бы "Form" применял, оно короче!)

    Как насчёт закрепить некоторые сокращения значении и тогда конструировать
    названия?...
    RamDisk - RD ?!
    Resolution - Res ?!
    Set или Get всегда должны быть первыми в названии ?!
    Scr - Screen ?!
    Background - какая альтернатива лучше Back или Backgrd или BackScr ?!
    Sys - System ?!
    Button - Btn ?!

    PutPixel - Функция 1 - поставить точку в окне.
    (может всё таки PutPix тоже пойдёт?! а может вообще Pix ?!)

    ИСПРАВЛЮ: ReadFileRD - Функция 6 - прочитать файл с рамдиска
  • Veliant wrote:Для кого все эти функции? Для разработчиков на asm'е? Они дергают mcall/int 0x40 напрямую.
    NASM-овцам это не помешало определить свои имена.
    Сделаем мир лучше!
  • ALEXS1983 wrote:Посмотри внимательно на длину названий (процедур и прочего), в том коде!... у меня лично, ну нет никакого желания такое «набахкивать» на клавиатуре
    На самом деле код должен быть в первую очередь читаемым - в той мере, в которой это не противоречит нужным оптимизациям кода. "Соотношение времени чтения и написания кода превышает 10:1" © Мартин, "Чистый код". Сокращать слово Background, учитывая, что в большинстве приложений эти функции вообще не нужны, и даже там, где нужны, они вряд ли встречаются в десяти разных местах кода, - довольно странная идея.
    Название GetPixel/SetPixel большинство программистов поймут даже без документации, расходовать дополнительные усилия мозга на запоминание, что здесь оно называется каким-то странным термином Pxl или Pix, означает отвлечь эти усилия от чего-то более важного.

    Про Resolution не слушай Veliant'а, GetScreenSize вполне нормально. Вообще, посмотри на описания в sysfuncs.txt - там английский далёк от идеального, но всё-таки читаемый.
    ALEXS1983 wrote:Что лучше в конструкциях названий применять "Window" или "Form" ?
    (Я бы "Form" применял, оно короче!)
    Window. Form - это немного не то: https://en.wikipedia.org/wiki/Form_(programming) vs https://en.wikipedia.org/wiki/Window_(computing)
    Сделаем мир лучше!
  • В Форте очень много коротких названий функций :)
    Вплоть до

    Code: Select all

    : начать определение нового следующего слова (в режиме компиляции)
    ; закончить определение слова и переключиться в режим интерпретации
    . (точка) печать значения
    , (запятая) дбавить значение по текущему адресу в кодофайле и продвинуть указатель текущего адреса.
    ! (восклицательный знак) занести значение по адресу в память
    @  извечь значение по адресу
    I счётчик цикла 
    J счётчик внешнего цикла
    # выделить символ из числа при форматном преобразовании согласно текущей системы счисления в конструкции <# # # # # #>
    \ комментарий до конца строки
    ( начало коментирования входных -- выходных соглашений по параметрам (не обязателен к использованию)
    ) завершение  коментирования входных -- выходных соглашений по параметрам (не обязателен к использованию)
    [ переключить состояние системы в режим интерпритации
    ] перекючить  состояние системы в режим компиляции
    ' получить адрес исполнительной части следующего слова (в режиме интерпретации)
    ['] получить адрес исполнительной части следующего слова (в режиме компиляции))
    Пробел  -  основной разделитель слов BL название кода для использования 
    
    для работы с байтами памяти добавляется префикс С Пример С@ C!
    двух знаковые тоже есть >R R> ." S" и др.
    CR перевести указатель строки.
    Функции работы со строками, файлами и др. тоже неплохо именованы.

    При формировании сложных слов в Форте предпочтительнее с суффиксом-действия.
    Или например HERE текущий адрес в кодофайле

    P.S. Форт системы имеют очень большое число разных функционально слов. :)
    KEY ожидать "клавиши" клавиатуры
    ?KEY проверить наличие введённой "клавишы" клавиатуры.
    EMIT отправить символ-байт на текщее устройство его печати. (консоль, файл...)
    TYPE напечатать строку символов с аddr n-символов
    ." Hello" вывести HELLO на устройство отображения.
    Last edited by Kopa on Fri Dec 11, 2015 7:14 pm, edited 12 times in total.
  • Есть и более распространённый язык, провоцирующий на написание кода в стиле "краткость - сестра таланта". Он называется Perl и носит гордое звание write-only language.
    http://bash.im/quote/403221
    yyy: я когда сюды устроился, бывший админ здесь скрипт перловый мне в наследство оставил
    yyy: скрипт в виде рисунка белочки был
    yyy: я пока разобрал - столько пива ушло, чуть эту белочку не словил...
    Сделаем мир лучше!
  • CleverMouse wrote:Есть и более распространённый язык, провоцирующий на написание кода в стиле "краткость - сестра таланта". Он называется Perl и носит гордое звание write-only language.
    http://bash.im/quote/403221
    yyy: я когда сюды устроился, бывший админ здесь скрипт перловый мне в наследство оставил
    yyy: скрипт в виде рисунка белочки был
    yyy: я пока разобрал - столько пива ушло, чуть эту белочку не словил...
    Вроде J и К языки довольно компактны. А "закрученность" Перла разве не из-за использования регулярных выражений?

    P.S. В программе nncron Форт даёт наибольшую возможность "саморасширения", а если задействовать возможности по изменению
    синтаксиса и семантики языка, то можно эффективно "сворачивать" семантику понятий в необходимый синтаксис. :)
    По распространённости (вернее разнообразию) Форт очень распространён.
  • Veliant
    Что это за ужас? У тебя получилось больше кода, чем на ассемблере.
  • Who is online

    Users browsing this forum: Bing [Bot] and 3 guests