The OpenNET Project / Index page

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



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

Оглавление

Почему объектно-ориентированное программирование провалилось?, opennews (ok), 03-Окт-10, (0) [смотреть все]

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


56. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от pavlinux (ok), 03-Окт-10, 14:46 
> просто нахер обязан посылать программиста,
> не расписавшего в UML-подобной надстройке над "Хелло, мама!"
> суровый план пространства имен.

Э-э-ээээ, типа
$ echo "Хелло, мама!"
не айс?!

ООП для других масштабов!
  

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

60. "Почему объектно-ориентированное программирование провалилось..."  –1 +/
Сообщение от Fcukuemail (ok), 03-Окт-10, 14:57 
Именно нахер.

http://habrahabr.ru/blogs/nix_coding/75971/

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

110. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от pavlinux (ok), 03-Окт-10, 19:44 
> Именно нахер.
> http://habrahabr.ru/blogs/nix_coding/75971/

Хе... :)

Каждая Труъ Юних программулина, должна иметь свой обработчик ошибок,
проверять и обрабатывать возвращаемые значения ВСЕХ используемых функций!!!  
Желательно прикрутить проверку на права доступа к внешним объектам.
Выводить информацию и, или ошибки в syslog.


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>

#include <sched.h>
#include <sys/resource.h>

typedef void (*sighandler_t)(int);

sighandler_t sighdlr(int);

/* Signal handler */
sighandler_t sighdlr(int sig) {

    if ( sig == EINTR ) // It's just a signal, try again
        return NULL;
    exit(sig);
}

static const char * const msg = "Hello World!\n";

int main() {

    int s;
    int max_prio;
    size_t lenstr;
    size_t remaining;
    ssize_t res;
    const char *begin;
    const char *end;

    struct sched_param shd;

    /* set prio */
    max_prio = sched_get_priority_max(SCHED_OTHER);
    shd.sched_priority = max_prio;

    if (sched_setscheduler(0, SCHED_OTHER, &shd) != 0)
        exit(0);

    errno = 0;
    lenstr = strlen(msg);
    if (errno != 0) {
        switch (errno) {
            case EINVAL:
            case EFAULT:
            case EFBIG: /* Too big */
            case EAGAIN:
            default:
                return (errno);
        }
    }

    /* Unbuffered out */
    errno = 0;
    s = setvbuf(stdout, (char *) NULL, _IOLBF, 0);
    if (s != 0 || errno != 0)
        return (errno);

    /* Run signal handler */
    for (s = 1; s < (_NSIG / 2); s++) {
        if (s != SIGKILL || s != SIGSTOP) {
            errno = 0;
            signal(s, (sighandler_t) sighdlr);
            if (errno != 0 && errno == EINVAL) {
                continue; /* signul is invalid */
            }
        } else
            continue;
    }

    begin = msg;
    end = begin + lenstr;

    while (begin < end) {

        remaining = end - begin;

        errno = 0;
        res = write(STDOUT_FILENO, begin, remaining);

        if (errno != 0) {
            switch (errno) {
                case EBADF:
                case EINVAL:
                case EFAULT:
                case EFBIG:
                case EPIPE:
                case EAGAIN:                
                case ENOSPC:
                case EIO:
                default:
                    return (errno);
            }
        }
        if (res >= 0) {
            begin += res;
            continue; // Let's send the remaining part of this message
        } else {
            return (EXIT_FAILURE); // It's a real error
        }
    }
    return (EXIT_SUCCESS); // OK! Let's celebrate and drink some beer!
}


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

122. "Почему объектно-ориентированное программирование провалилось..."  –1 +/
Сообщение от User294 (ok), 03-Окт-10, 21:34 
> Каждая Труъ Юних программулина, должна иметь свой обработчик ошибок,
> проверять и обрабатывать возвращаемые значения ВСЕХ используемых функций!!!

И это правильно, блин! Как же задрал *говнокод* который тихо издыхает забыв сообщить причину или того хуже - взглюкивает и дальше криво работает, а может подыхает но через сутки мучений. Так что потом даже концов не найдешь от чего оно там по факту сдохло. Это тот случай когда сэкономив 20 секунд на кодинге можно прое...ть многие часы на дебагинг, вашумать. И потом обломаться обнаружив что все было просто и тривиально, просто не проверили что-то а оно имело право сломаться. Да, мля. Память может закончиться. Файлов можно открывать не бесконечно много. И даже, мля, файл в общем то не обязан гарантированно прочитаться. И это еще не повод упасть или дико взглючить не выдав вменяемого сообщения. Тех кто не проверяет ошибки - надо вешать путем расстрела с особой жестокостью. Другим меньше мучений будет.

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

126. "Почему объектно-ориентированное программирование провалилось..."  –1 +/
Сообщение от pavlinux (ok), 03-Окт-10, 21:50 
>... можно прое...ть многие ...
> Да, мля. ....
> ... И даже, мля

Какой-то злой ты сегодня. :)


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

157. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от zazik (ok), 04-Окт-10, 09:12 
Злой, но справедливый. Я его понимаю.
Ответить | Правка | Наверх | Cообщить модератору

129. "Почему объектно-ориентированное программирование провалилось..."  –1 +/
Сообщение от Аноним (-), 03-Окт-10, 22:12 
> Тех кто не проверяет ошибки - надо вешать путем расстрела с особой жестокостью. Другим меньше мучений будет.

"проверяет ошибки" - это как? Как капканы что ли?
А вы проверяете, что сами говорите? Или вас тоже в расход?

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

144. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от Fcukuemail (ok), 04-Окт-10, 01:21 
> "проверяет ошибки" - это как?

Не кривляйтесь, пожалуйста.

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

193. "Почему объектно-ориентированное программирование провалилось..."  +1 +/
Сообщение от Andrew Kolchoogin (?), 04-Окт-10, 13:50 
"Два" тебе, Павлин.
Нужно проверять тип Юникса, под которым это всё пытается собраться (кое-где EAGAIN называется EWOULDBLOCK).

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

194. "Почему объектно-ориентированное программирование провалилось..."  –1 +/
Сообщение от pavlinux (ok), 04-Окт-10, 13:58 
> "Два" тебе, Павлин.
> Нужно проверять тип Юникса, под которым это всё пытается собраться (кое-где EAGAIN
> называется EWOULDBLOCK).

Проблемы переносимости, это вторая часть концерта.

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

195. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от fr0ster (ok), 04-Окт-10, 14:02 
>> "Два" тебе, Павлин.
>> Нужно проверять тип Юникса, под которым это всё пытается собраться (кое-где EAGAIN
>> называется EWOULDBLOCK).
> Проблемы переносимости, это вторая часть концерта.

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

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

196. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от pavlinux (ok), 04-Окт-10, 14:18 
>>> "Два" тебе, Павлин.
>>> Нужно проверять тип Юникса, под которым это всё пытается собраться (кое-где EAGAIN
>>> называется EWOULDBLOCK).
>> Проблемы переносимости, это вторая часть концерта.
> Без переносимости не стоит и огород городить с кучей проверок там, где
> они не нужны, эдак можете дойти до изобретения дотнетовского велосипеда на
> базе С.

А это ты Andrew Kolchoogin скажи, он придрался к портабельности, а POSIX говорит:

[EAGAIN]
    Resource unavailable, try again (may be the same value as [EWOULDBLOCK]).

http://www.opengroup.org/onlinepubs/009695399/basedefs/errno...


[EWOULDBLOCK]
    Operation would block. An operation on a socket marked as non-blocking has encountered a situation such as no data available that otherwise would have caused the function to suspend execution.

    A conforming implementation may assign the same values for [EWOULDBLOCK] and [EAGAIN].


http://www.opengroup.org/onlinepubs/009695399/functions/xsh_...

У МЕНЯ НЕТ ТУТ СОКЕТОВ !!!

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

197. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от fr0ster (ok), 04-Окт-10, 14:32 
> А это ты Andrew Kolchoogin скажи, он придрался к портабельности, а POSIX
> говорит:

Вот только проблема переносимости не заканчивается на ПОСИКС системах, иногда требуется перенести код и на совсем нечто. А иногда вообще нужно написать код, который через две недели уже никому не будет нужен, но вот сейчас он нужен что ой просто. Всегда надо соблюдать баланс между академичностью и практичностью.

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

199. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от pavlinux (ok), 04-Окт-10, 17:01 
>> А это ты Andrew Kolchoogin скажи, он придрался к портабельности, а POSIX
>> говорит:
> Вот только проблема переносимости не заканчивается на ПОСИКС системах, иногда требуется
> перенести код и на совсем нечто. А иногда вообще нужно написать
> код, который через две недели уже никому не будет нужен, но
> вот сейчас он нужен что ой просто.

ООП явно не для этого :)

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

200. "Почему объектно-ориентированное программирование провалилось..."  +/
Сообщение от fr0ster (ok), 04-Окт-10, 17:11 
>>> А это ты Andrew Kolchoogin скажи, он придрался к портабельности, а POSIX
>>> говорит:
>> Вот только проблема переносимости не заканчивается на ПОСИКС системах, иногда требуется
>> перенести код и на совсем нечто. А иногда вообще нужно написать
>> код, который через две недели уже никому не будет нужен, но
>> вот сейчас он нужен что ой просто.
> ООП явно не для этого :)

ООП инструмент, в С++ одна из задач ООП была повышение управляемости кодовой базы, но всегда можно инструмент применить для новых задач. Так что косвенно ООП можно и для этого применить, а явного в жизни очень мало.

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

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

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




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

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