The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Instagram открыл код MonkeyType, системы аннотации типов для..., opennews (??), 22-Дек-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


76. "Instagram открыл код MonkeyType, системы аннотации типов для..."  +/
Сообщение от eganru (?), 23-Дек-17, 10:06 
[i]Ну там например для системных вызовов - там уж такой интерфейс, какой есть. [/i] - я когда писал себе операционную систему сделал системные вызовы вообще вот так:

/**
* system call
* number after syscall is argument count
*/
static inline __attribute__((always_inline)) u32_u32 syscall0(u8 syscall_num)
{
    volatile register u32_u32 __attribute__((unused)) result asm ("$2");
    volatile register u32 __attribute__((unused)) bogus asm ("$3");
    __asm__ volatile ("move %0, %1\n\t\
            syscall"\
            : "+r"(result)\
            : "r"(syscall_num));
    return result;
}

для каждого количества аргументов по такому вызову, а потом селектор на макросе.

[i]Пардон, в си компилятор за откровенно левые действия с типами по пальцам даст[/i] - проблемы в С обычно находятся там, где человек уже перестает ясно понимать логику работы.
В питоне, насколько я помню, примерно там же. То есть дело вряд-ли конкретно в языке.

понятное дело, что на С и на Питоне пишут все же в основном разные вещи.

Ответить | Правка | Наверх | Cообщить модератору

95. "Instagram открыл код MonkeyType, системы аннотации типов для..."  –1 +/
Сообщение от Аноним (-), 23-Дек-17, 19:56 
> я когда писал себе операционную систему сделал системные вызовы вообще вот так:

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

И не в обиду тарабарщину вида static inline __attribute__((always_inline)) u32_u32 занимающую полстроки можно было заменить каким-нибудь макросом, чтоли. А asm - вообще непортабельно и убивает весь пойнт Си.

> проблемы в С обычно находятся там, где человек уже перестает ясно понимать логику работы.

Это обычно случается если человек лабух и не смог вовремя осознать что софт надо разбивать на отдельные логически независимые компоненты.

> В питоне, насколько я помню, примерно там же. То есть дело вряд-ли конкретно в языке.

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру