Лингвофорум

Лингвоблоги => Личные блоги => Алексей Гринь => Topic started by: Алексей Гринь on October 17, 2009, 14:43

Title: Имбецилы
Post by: Алексей Гринь on October 17, 2009, 14:43
Нужно собрать в отдельную тему.

Имбецилы на http://www.linux.org.ru
Стоило мне упомянуть евреев (совершенно без злого умысла) как пост удалили (ну и пусть бы), так автоматически удалились ещё три совершено невинных поста по другой теме (про кириллицу) из того же треда. Имбецилы? Имбецилы.
Title: Имбецилы
Post by: Rōmānus on October 17, 2009, 14:44
Стоило мне упомянуть евреев

А евреи каким-то образом относятся к Линуксу? Или у вас это "больное"?
Title: Имбецилы
Post by: Алексей Гринь on October 17, 2009, 15:02
Тема была про еврея по национальности, не имею против евреев ничего. Но это не отменяет факта, что бот у них кривенький. Как и сам линупс :)
Title: Имбецилы
Post by: myst on October 17, 2009, 15:06
Это ЛОР, детка. ;)
Title: Имбецилы
Post by: myst on October 17, 2009, 15:08
Теперь всё работает, в том числе Компиз :) Писаю от счастья.
Ну ничего, скоро наешься убунты, ка́каться начнёшь. ;)
Как и сам линупс :)
Не прошло и месяца. ;D
Title: Имбецилы
Post by: Алексей Гринь on October 17, 2009, 17:49
Не, винда кривее.
В конторе сегодня имел дело с ЭТИМ.
Фотошоп искрил сообщениями о рандомных Program Error, Тырнет Ыксплорер закрывался полчаса (ФФ или Оперы там не было), при закрытии ACDSee вообще завис весь десктоп, спас святой ребут. Не говоря уже о постоянно выскакивающих ошибках разных демоновсервисов и облюбленных народом быдлопрограмм типа СyberLink (который показал мне докучи всплывающее окошко "5$ for update"). И это всё при установленном касперском, разумеется. В моей Убунте из глюков только кривая мышка, надо xconf изучать-править, всё время в лом или нет времени.
В Майкрософт работают имбецилы? 100%. В Убунту Фаундэйшан (или как там) работают имбецилы? Немного.

По начальному сообщению — это я погорячился, тему, похоже, снесли :)
Title: Имбецилы
Post by: Алексей Гринь on October 17, 2009, 17:53
Не по теме, зато по духу нашёл сегодня http://lleo.aha.ru/dnevnik/2008/09/01.html

На мгновение показавшийся мне имбецилом Каганов восстановил свою репутацию.
Title: Имбецилы
Post by: myst on October 17, 2009, 18:43
Что же ты с бедными форточками делаешь-то, изверг? ;)
Title: Имбецилы
Post by: Алексей Гринь on October 17, 2009, 18:49
Это не я, мне его такое дали :)
Title: Имбецилы
Post by: Алексей Гринь on November 6, 2009, 18:05
Имбецилы на http://forum.altlinux.org/ (или у провайдера)

Т. к. я осознал, что Ubuntu не лишена имбецилии, я решил опробовать ALT Linux (просто потрогать). Перед этим я захожу на их форум, и что получаю:

Quote
Извините Гость, Вы забанены и не можете оставлять сообщения на форуме!
Создание нового ника после бана

Ну разве не имбецилы? Выделенное болдом как бы намекает, что "забаненным" оказался не только я...
Title: Имбецилы
Post by: myst on November 6, 2009, 18:08
Потрогай лучше Arch, но помни! Он для настоящих джедаев. ;)
Title: Имбецилы
Post by: Triton on November 6, 2009, 19:27
ALT Linux это у нас, кажется, поделка на основе Мандривы...
Имхо, лучше всего поставить Debian, настроить, и забыть остальные дистрибутивы как страшный сон.
Title: Имбецилы
Post by: myst on November 6, 2009, 20:50
Меня Arch прикалывает, но зачем они сэкономили на документации?! :wall:
Title: Имбецилы
Post by: Алексей Гринь on November 6, 2009, 21:47
Меня Arch прикалывает, но зачем они сэкономили на документации?! :wall:
Почитал я их вики, сблеванул. Столько орфографических ошибок я видел последний раз в школе.

Юзать операционку красноглазых школьников не хочется :)
Title: Имбецилы
Post by: myst on November 6, 2009, 21:49
Юзать операционку красноглазых школьников не хочется :)
Нормально там всё.
Title: Имбецилы
Post by: Алексей Гринь on November 6, 2009, 21:58
Лучге подскажите фреймовый невырвиглазный Window Manager. Замечтался о таком, шоб как бы рабочий стол имеет несколько фреймов (допустим, два а ля Norton/Volkov Commander/FAR), и в то же время чтобы можно было бы в любой момент времени один из фреймов развернуть на весь экран, и шоб не красноглазие в то же время (типа розовый/зелёный цвет везде в сеточку), а нормально шоб.

После Gnome Shell действительно понял, что система окон тупа и неудобна совсем (особенно когда окна перекрывают друг друга — ну какой от этого толк?).

Эх... :) А мне ведь больше и не надо...

Да, и шоб строка терминала была внизу легко доступная (опять как в том же FAR'е). Есть такое?
Title: Имбецилы
Post by: Bhudh on November 6, 2009, 22:08
Так RawonaM что-то похожее, помнится, хотел. Он наверняка знает.
Title: Имбецилы
Post by: Алексей Гринь on November 8, 2009, 06:56
С++ - это чудо какое-то.

Допустим, есть такой определение (mycoolclass.h):

template <class T>
class MyCoolClass: public ParentClass<T>
{

public:

   // Переопределяемый методик.
   virtual void add(T item);
   
   // Конструкторчик.
   MyCoolClass();

};


И есть реализация (mycoolclass.cpp):


    // Методик.
    template <class T>
    void MyCoolClass<T>::add(T item)
    {
        // ...
    }

    // Конструкторчик.
    template <class T>
    MyCoolClass<T>::MyCoolClass()
    {
        // ...
    }

   
А в main.cpp есть вот так:

    MyCoolClass<int>* l = new MyCoolClass<int>();
    l->add(10);

   
Так это чучело мне пишет: undefined reference to `MyCoolClass<int>::MyCoolClass()', при том что на add не жалуется,
т.е. какбэ сам фаел подключён и линкуется (ибо он в том же файле, что и конструктор).

Вот это компилируется без проблем (правда, с сегментейшн фолтом):

    MyCoolClass<int>* l = 0;
    l->add(10);


Внимание, вопрос: кто имбецил?
Title: Имбецилы
Post by: Алексей Гринь on November 8, 2009, 07:10
Будь рядом Страус-труп, с удовольствием бы дал лопатой по лицу.

После того, как я убрал из *.cpp реализацию конструктора, он вдруг вспомнил, что не может найти add. А-а-а
Title: Имбецилы
Post by: Triton on November 8, 2009, 08:53
А почему у вас тела методов шаблона в cpp вынесены, они ж как бы в h всю жизнь были.
Title: Имбецилы
Post by: Чайник777 on November 8, 2009, 16:20
Будь рядом Страус-труп, с удовольствием бы дал лопатой по лицу.
доставило.
Title: Имбецилы
Post by: myst on November 8, 2009, 17:30
Будь рядом Страус-труп, с удовольствием бы дал лопатой по лицу.
:??? Он тебе или ты ему?
Title: Имбецилы
Post by: Triton on November 8, 2009, 17:32
Будь рядом Страус-труп, с удовольствием бы дал лопатой по лицу.
:??? Он тебе или ты ему?
  :o :green:
Title: Имбецилы
Post by: myst on November 8, 2009, 17:33
А в main.cpp есть вот так:

    MyCoolClass<int>* l = new MyCoolClass<int>();
    l->add(10);

   
Так это чучело мне пишет: undefined reference to `MyCoolClass<int>::MyCoolClass()', при том что на add не жалуется,
т.е. какбэ сам фаел подключён и линкуется (ибо он в том же файле, что и конструктор).
Компилятор какбэ не телепат.
Title: Имбецилы
Post by: Bhudh on November 8, 2009, 18:48
Quote from: myst
:??? Он тебе или ты ему?


:E:
Title: Имбецилы
Post by: Karakurt on November 8, 2009, 19:06
Компилятор какбэ не телепат.
Вы не ответили на вопрос:
Внимание, вопрос: кто имбецил?
;)
Title: Имбецилы
Post by: myst on November 8, 2009, 19:09
Компилятор какбэ не телепат.
Вы не ответили на вопрос:
Внимание, вопрос: кто имбецил?
;)
(http://upload.wikimedia.org/wikipedia/ru/thumb/8/82/%D0%AD%D0%BB%D1%8C%D0%B4%D0%B0%D1%80_%D0%96%D0%B8%D0%BD%D0%B4%D0%B0%D1%80%D1%91%D0%B2.jpg/180px-%D0%AD%D0%BB%D1%8C%D0%B4%D0%B0%D1%80_%D0%96%D0%B8%D0%BD%D0%B4%D0%B0%D1%80%D1%91%D0%B2.jpg): Не хотелось бы никого обижать...
Title: Имбецилы
Post by: Алексей Гринь on November 9, 2009, 02:20
Ну так скажите, что исправить? Сильно заморачиваться тихим бредом датского имбецила не хочется.

А почему у вас тела методов шаблона в cpp вынесены, они ж как бы в h всю жизнь были.
В реализации каждого метода нужно писать каждый раз template <class T>, как имбецил. Мегакрутой c++ иначе не воткнёт (имбецил же).

Компилятор какбэ не телепат.
Чо? Компилятор всё видит, ибо compile-time ошибок не выдаёт. Вопит линкер, который в том же файле видит метод add. Если пошутить, он внезапно перестаёт видеть add. Я пытаюсь понять, что я сделал не так... За ходом афазической мысли олигофренов очень сложно следить, но я пытаюсь осмыслить как-то, люблю психиатрию.
Title: Имбецилы
Post by: myst on November 9, 2009, 03:04
Я пытаюсь понять, что я сделал не так...
Не удосужился прочитать учебник. Марш читать Страуса! (Поторопись, он уже идёт в сарай за лопатой... ;))
Title: Имбецилы
Post by: Алексей Гринь on November 9, 2009, 03:07
Не удосужился прочитать учебник. Марш читать Страуса! (Поторопись, он уже идёт в сарай за лопатой... ;))
Не-а, я делаю всё правильно. Имбецил тут, похоже, Code::Blocks. Потому что если в main.cpp вместо

   #include "MyCoolClass.h"

написать
 
   #include "ParentClass.cpp"
   #include "MyCoolClass.cpp"

всё компилится без проблем. Т.е. имбецил-КодеБлокс не подключает цппов. Не понимаю, из-за чего такое может быть. Все нужные файлы к проекту подключены.
Title: Имбецилы
Post by: Алексей Гринь on November 9, 2009, 03:09
Только что КодеБлокс вылетел с Segmentation Fault. O shi~ :(
Title: Имбецилы
Post by: Алексей Гринь on November 9, 2009, 03:22
И ведь что забавно, если делать то же, но в Plain C,  то всё происходит абсолютно беспроблемно. Отчего же, отчего же всё так в цэпопе костыльно и вкривь?
Title: Имбецилы
Post by: Алексей Гринь on November 9, 2009, 03:59
Я плачу кровавыми слезами. Мы предположили, что имбецил — КодеБлокс, потому что почему-то не видит файлов реализации, а хедеры видит. Ок, для интересу я определил функции прямо в хедерах:

   virtual void add(T item) { }

Так теперь это чудо имбецилии пишет мне:

MySuperClass.cpp|7|error: redefinition of ‘void MySuperClass<T>::add(T)’|
MySuperClass.h|20|error: ‘virtual void MySuperClass<T>::add(T)’ previously declared here|
||=== Build finished: 2 errors, 0 warnings ===|

Т. е. это чучело видит cpp, но не хочет линковать. Хм...

А если написать так:

   virtual void add(T item);

То это индиго мне пишет:

obj/Debug/main.o||In function `main':|
/main.cpp|5|undefined reference to `MySuperClass<int>::MySuperClass()'|
/main.cpp|7|undefined reference to `MySuperClass<int>::add(int)'|
||=== Build finished: 2 errors, 0 warnings ===|

Ололо, взаимоисключающие параграфы! То он мне пишет, что ничо не определено, то пишет, что дважды.
Title: Имбецилы
Post by: Алексей Гринь on November 9, 2009, 04:46
Всё понял. Я ранее недооценивал уровень ущербности Сиплюса. Надо шаблоны реально писать в хедерах. Писец. Маразм крепчал.

Смысл выражения "через жопу" стал намного яснее теперь.
Title: Имбецилы
Post by: Triton on November 9, 2009, 09:37
Гринь, извините, но прежде чем называть кого-то имбецилом, не помешает прочитать инструкцию на пользуемый инструмент.
Шаблоны надо писать именно в хэдерах, потому что они по своей сути - макросы, подставляемые во время компиляции. Вынести их cpp не представляется возможным.

Таки да, ни Си, ни Си++ не имеют внятной поддержки модульности и раздельной компиляции, только костыль в виде хэдеров, что поделать, это не академический паскаль и не ада.  :donno:
Title: Имбецилы
Post by: myst on November 9, 2009, 14:33
Шаблоны надо писать именно в хэдерах, потому что они по своей сути - макросы, подставляемые во время компиляции. Вынести их cpp не представляется возможным.
Можно, но надо помнить: первое, выхлоп компилятора — машинный код, никаких шаблонов в объектных файлах уже нет; второе, компилятор создаёт только экземпляры шаблона, необходимые в данной единице компиляции. Если нужен экземпляр шаблона для другой единицы, надо сказать об этом компилятору. Так как это зело негибко, это почти не практикуется, и шаблоны хранят в заголовочниках.

И да, у Страуса в книге всё это есть. Так шта, read the fucking manual right now! ;)
Title: Имбецилы
Post by: Triton on November 9, 2009, 16:42
О том и речь. Так же как теоретически можно и вручную в cpp вписать объявления нужных внешних функций и описания типов данных, а практически они хранятся в h.
Title: Имбецилы
Post by: Алексей Гринь on November 11, 2009, 13:49
Гринь, извините, но прежде чем называть кого-то имбецилом, не помешает прочитать инструкцию на пользуемый инструмент.
Не, когда используешь некий инструмент, 90% времени идёт руководствование ЗДРАВЫМ СМЫСЛОМ (некие общепринятые стандарты, интуитивность интерфейсов и т. д.), когда же в 10% ЗДРАВЫЙ СМЫСЛ отсутствует, нужно читать маны. Когда же у какого-то инструмента всё ровно наоборот — костылей больше, чем здравого смысла — то это уже херня на постном масле, а не «инструмент».

Шаблоны надо писать именно в хэдерах, потому что они по своей сути - макросы, подставляемые во время компиляции
Есть куча языков, в которых почему-то шаблоны (называемые чаще макросами) могут вполне нормально находиться в файле реализации.

Они идиоты: осилили раздельную компиляцию *.cpp-файлов в *.o файлы с последующей общей линковкой, но сделать что-то подобное с шаблонами не осилили, а ведь могли сделать формат *.tem, который бы тоже делался в некий объектный метакод, а потом линкером всё бы скреплялось. Ан нет, такого нету.

Шаблоны это самые обычные допотопные сишные макросы, только типизированные — и всё.

только костыль в виде хэдеров
Какой костыль? Хедеры это вообще-то элемент хорошей, годной архитектуры отделения интерфейса от реализации. Почему это круто — см. гугл.

С++ пытается занять нишу некоего высокоуровненого языка, а на деле оказывается самым обычным си со свистелками и перделками. Нафиг он нужен-то тогда? Поэтому я снова возвращаюсь к сяхе, попытка полюбить цэпэпэ не удалась. Извините, но блестеть кишками в файле интерфейса у всех на виду — это не моё.
Title: Имбецилы
Post by: myst on November 11, 2009, 14:33
Они идиоты: осилили раздельную компиляцию *.cpp-файлов в *.o файлы с последующей общей линковкой, но сделать что-то подобное с шаблонами не осилили, а ведь могли сделать формат *.tem, который бы тоже делался в некий объектный метакод, а потом линкером всё бы скреплялось. Ан нет, такого нету.
Вот тебе статья на злобу дня (http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=52&rll=1).
А вот тебе прямая ссылка на компилер, который умеет раздельную компиляцию шаблонов: http://www.comeaucomputing.com/
Title: Имбецилы
Post by: myst on November 11, 2009, 14:34
Хедеры это вообще-то элемент хорошей, годной архитектуры отделения интерфейса от реализации. Почему это круто — см. гугл.
Годной?! :o
Механическая вставка файла в файл препроцессором — это самый наикостыльнейший костыль. Как и препроцессор в целом...
Title: Имбецилы
Post by: myst on November 11, 2009, 14:38
Поэтому я снова возвращаюсь к сяхе, попытка полюбить цэпэпэ не удалась.
О да! Си — это предел совершенства, когда нужно загубить несколько тысяч человеко-лет. (http://www.kolobok.us/smiles/madhouse/sarcastic.gif)
Title: Имбецилы
Post by: Алексей Гринь on November 11, 2009, 14:54
А вот тебе прямая ссылка на компилер, который умеет раздельную компиляцию шаблонов: http://www.comeaucomputing.com/
Что-такое про него слышал, но его покупать ещё надо :) И не знаю, насколько он совестим с gcc, а люблю расширения gcc.
И, кстати, что насчёт компиляции шаблонов в стандарте? Это как-то оговаривается, или implementation-dependent?

О да! Си — это предел совершенства, когда нужно загубить несколько тысяч человеко-лет.
Неправда. Система исключений делается одним человеком за пару часов, система наследования, виртуальные методы и даже приведение типов с рантайм-проверкой при умелом подходе делаются одним человеком за рабочий день.
Я вчера исключения переписал с использованием ключевого слова __thread, открыл для себя эту прелесть C99 и gcc (gcc-то впереди планеты всей, там это давно было) :) До перехода на линукс юзал виндовые Tls*** :(
Один раз написал фреймворк — и юзай хоть до самой смерти, в чём проблема?

Годной?! :o
Механическая вставка файла в файл препроцессором — это самый наикостыльнейший костыль. Как и препроцессор в целом...
Э-э. Я говорю, что отделение интерфейса от реализации — это круто. Я не говорю, что то, как это реализовано в Си, мегакруто. В цэпопе там вообще всё в кучу, ещё хуже. Тут надо вдуматься в значение слова "хедер": заголовок.
Вот СиШарпах всяких и Явах, чтобы поглядеть на интерфейс/контракт, нельзя нормально глянуть в код. Только на всякие IDE да RAD'ы можно полагаться, потому что тоже там всё в кучу. Контракт — отдельно, мухи — отдельно, господа!

Механическая вставка файла в файл препроцессором — это самый наикостыльнейший костыль. Как и препроцессор в целом...
Так то же самое и делает СиПлюс. Та же механическая вставка, только типизированная (с проверкой типов аргументов макросов). Я же не в абсолютных величинах сравниваю (ясно, что в Си макросы кривые по сравнению с какой-нибудь Немерлей), а конкретно СиПлюс с СиКавай. И СиПлюс посасывает в таком сравнении
Title: Имбецилы
Post by: myst on November 11, 2009, 15:08
И, кстати, что насчёт компиляции шаблонов в стандарте? Это как-то оговаривается, или implementation-dependent?
У меня нет стандарта. По-моему, жадные стандартизаторы его зажали.
Title: Имбецилы
Post by: myst on November 11, 2009, 15:12
в чём проблема?
В том, что людям надо программный продукт делать, а не обработку исключений, наследование, виртуальные методы, ..., ну ты понял. :)
Title: Имбецилы
Post by: Алексей Гринь on November 11, 2009, 15:25
Единственное, что меня огорчает в сишных макросах, так это отсутствие возможности макросом генерить другие макросы, напр. что-нибудь вроде так:

#define MAKE_MACRO(name, id, value)  #define name##id value

:(

Или, напр., const int satan = 666; не считается полноценной константой, и её нельзя в макросы лепить (в отличие от С++).

А так макросы классная штука, мне вот нонче надо было нагенерить разных функций по типу cfBox_* для всех примитивных типов, так это делалось так:

#define FOREACH_PRIM(macro) \
   macro(int) \
   macro(float) \
   macro(bool) \

   ...
etc. (сколь их там? небольше десятка. Этот добрый макрос написан раз и навсегда и используется много раз)

А затем:

#define HELPER(type) Object* cfBox_##type(type value);
   FOREACH_PRIM(HELPER)
#undef HELPER


И в том же духе.

Что равносильно СиПлюсовому:
template <class T>
Object* cfBox(T v);


С одним но: туто нету ограничения на type set. Или можно как-то по-другому? Потому что я не вкурил, как делать ограничения (по типу Сишарпового where)? Как я понял, никак нельзя, и типа тип выводится (type inference) по вызываемым методам и полям. А если полей вообще не вызывается? Как ограничить типы только для примитивных? Мне это надо!

И ещё повеселило: как реализовать специализацию шаблона для конкретного типа, да чтобы к нему подходили все наследуемые подклассы? И это типа высокоуровневый язык? На Си, блин, легче реализовать эмуляцию этой байды, чем попытаться понять, что курил Страуструп (и уж тем более читать его книжонки).

Макросы генерят быстрый, оптимизированный код за меня :) И никаких шаблонов не надо.

Quote
в чём проблема?
В том, что людям надо программный продукт делать, а не обработку исключений, наследование, виртуальные методы, ..., ну ты понял.
О да. Эти люди лучше потратят ВРЕМЯ и ДЕНЬГИ на обучение работников цпп-галлюцинациям (не удивлюсь, если к тому же цпп-программист стоит дороже, чем с-онли-программист), нежели они потратят ОДИН день и ОДНОГО адекватного человека на написание простого фреймворка, который реализует практически ВСЕ свистелки и перделки, за которые на цпп покупаются.
Title: Имбецилы
Post by: myst on November 11, 2009, 15:28
Хочешь мощных макр — бери CL.
Title: Имбецилы
Post by: Triton on November 11, 2009, 17:06
Хедеры это вообще-то элемент хорошей, годной архитектуры отделения интерфейса от реализации. Почему это круто — см. гугл.
Годной?! :o
Механическая вставка файла в файл препроцессором — это самый наикостыльнейший костыль. Как и препроцессор в целом...
+100.


Шаблоны это самые обычные допотопные сишные макросы, только типизированные — и всё.
Хедеры это вообще-то элемент хорошей, годной архитектуры отделения интерфейса от реализации.
Взаимоисключающие параграфы детектед.


Они идиоты: осилили раздельную компиляцию *.cpp-файлов в *.o файлы с последующей общей линковкой, но сделать что-то подобное с шаблонами не осилили, а ведь могли сделать формат *.tem, который бы тоже делался в некий объектный метакод, а потом линкером всё бы скреплялось. Ан нет, такого нету.
Они это кто: Кернинган и Ричи, Страустрап, стандартизаторы ISO, разработчики компиляторов?.. К кому обращено ваше праведное негодование?


Если по уму, то Си и Си++ в чисто прикладных задачах давно пора закопать, и пользоваться нормальными языками, а системные или требовательные к производительности модули вполне хорошо пишутся и на чистом Си, Си++ там даже вреден. Честно говоря, не вижу никакой ниши для этого языка.
Глядя, например, на приложения на QT, компилирующиеся по 10-15 минут, хочется сделать с разработчиками библиотеки что-нибудь радикальное. Хотя они не виноваты, просто компилятор судорожно пытается прожевать метры кодов, полученные в ходе обработки "хорошей, годной архитектуры" заголовочных файлов, да еще при этом борясь с неоднозначностью грамматики Си++.
Title: Имбецилы
Post by: Алексей Гринь on November 11, 2009, 18:32
»
Quote
Шаблоны это самые обычные допотопные сишные макросы, только типизированные — и всё.
Цитата: Алексей Гринь от Сегодня в 13:49
Quote
Хедеры это вообще-то элемент хорошей, годной архитектуры отделения интерфейса от реализации.
Взаимоисключающие параграфы детектед.
Человек, не отличающий понятия «хедер» от понятия «макрос», детектед.

Они это кто: Кернинган и Ричи, Страустрап, стандартизаторы ISO, разработчики компиляторов?.. К кому обращено ваше праведное негодование?
Если реализация шаблонов никак не оговорена в стандартах, то разработчики компиляторов. Comeau же умеет. А Кернинган и Ричи тут вообще причём?

Глядя, например, на приложения на QT, компилирующиеся по 10-15 минут, хочется сделать с разработчиками библиотеки что-нибудь радикальное.
Да-а, что самое забавное, ДВУХпроходные компиляторы зачастую компилируют быстрее, чем ОДНОпроходные сишные.

Глядя, например, на приложения на QT, компилирующиеся по 10-15 минут
А кто вас заставляет производить полную перекомпиляцию?
Title: Имбецилы
Post by: Алексей Гринь on November 11, 2009, 18:52
Ещё вчера я вон, набыдлокодил макросы для быстрого протипирования классов (а то много ручной работы выходит).

/* 2934834 это TypeId, надо, к сожалению, самому генерить (хешем в питоне делаю) */
CF_CLASS(cfChild, cfParent, 2934834)
   CF_FIELD(int blabla)
   CF_FIELD(bool lala)

   CF_VIRT_METHODS(cfChild)
        CF_VIRT_METHOD(MSG_KILL_KENNY)
        {
             int fstArg = CF_NEXT_ARG();
             printf("%d\n", fstArg);
        }
        CF_END_VIRT_METHOD
   CF_VIRT_END_METHODS

  CF_CTOR(cfChild, cfParent, int blabla, int bla)
  {
       self->blabla = blabla; self->bla = bla;
  }
  CF_END_CTOR
   
CF_END_CLASS

/* Опа! Тут и наследование, и подсчёт ссылок и прочая и прочая уже готовое. Юзайте на здоровье! Макросы уже сгенерировали всё, что нужно: */
int main(void)
{
   cfChild* child = cfChild_Create();

   /* апкаст с рантайм-проверкой возможности приведения,
       иначе выкидывается исключение: */
   cfObject* parent = CF_CAST(child, cfObject);

   /* Посыл сообщения ака виртуальный метод. */
   CF_VIRT_CALL(parent, MSG_KILL_KENNY, 666);

   return 0;
}

О да, называйте меня садомазером :D
Title: Имбецилы
Post by: Triton on November 11, 2009, 19:21
Человек, не отличающий понятия «хедер» от понятия «макрос», детектед.
Человек, не знающий, чем занимается команда cpp, детектед.


А кто вас заставляет производить полную перекомпиляцию?
Там и частичной хватает выши крыши, чтобы начать оглядываться в поисках топора.

ДВУХпроходные компиляторы
Хм, компиляторы чего?
Title: Имбецилы
Post by: Triton on November 11, 2009, 19:34
Ещё вчера я вон, набыдлокодил макросы для быстрого протипирования классов (а то много ручной работы выходит).
Угу, Си и Си++ прямо таки замечательные языки: сначала программист пишет свою реализацию ООП, свой тип данных для строк, свой механизм управления памятью, свой RTTI... а потом берёт другой язык, и приступает таки к решению поставленной задачи.

Title: Имбецилы
Post by: arseniiv on November 11, 2009, 20:18
Я вам и говорю: Delphi, переделанный синтаксисом под Си! Мне бы такой язык жутко понравился. ;D Нет-нет, не пинайте меня. А можно ещё сделать другой язык.
Кстати, насколько быстро работает преобразователь текста вместе с компилятором? Свой собственный компилятор всё же не очень легко написать.
Title: Имбецилы
Post by: myst on November 11, 2009, 21:51
Да-а, что самое забавное, ДВУХпроходные компиляторы зачастую компилируют быстрее, чем ОДНОпроходные сишные.
У тебя и пруфы есть? :eat:
Title: Имбецилы
Post by: myst on November 11, 2009, 21:53
О да, называйте меня садомазером :D
As you wish. ;)
Title: Имбецилы
Post by: myst on November 11, 2009, 21:55
Кстати, насколько быстро работает преобразователь текста вместе с компилятором?
А?
Title: Имбецилы
Post by: arseniiv on November 11, 2009, 22:03
Ну, синтаксис вида си преобразуется к другому желаемому и тем компилятором обраба...
Title: Имбецилы
Post by: Triton on November 11, 2009, 22:06
Я вам и говорю: Delphi, переделанный синтаксисом под Си! Мне бы такой язык жутко понравился. ;D Нет-нет, не пинайте меня.
Object Pascal... увольте.) Для прикладных задач всегда Java, Ruby, Tcl...

А можно ещё сделать другой язык.
А можно сделать свою ОС... Да куда там - свою аппаратную платформу! Вот только зачем? :eat:
Есть конечно маньяки вроде меня, которым этот процесс интересен сам по себе...  :D

Свой собственный компилятор всё же не очень легко написать.
Таки достаточно легко.
Крайне сложно написать оптимизирующий компилятор.  ;)
Title: Имбецилы
Post by: myst on November 11, 2009, 22:09
Ну, синтаксис вида си преобразуется к другому желаемому и тем компилятором обраба...
Это компилятор и есть, трансляция не обязательно в машинный код делается.
Title: Имбецилы
Post by: myst on November 11, 2009, 22:13
Пока Гринь бороздит просторы препроцессора C, старики сражаются со змием окаянным, C++. Подробности (http://golang.org/). Реинкарнация Limbo, не иначе. :)
Title: Имбецилы
Post by: Triton on November 11, 2009, 22:15
Ну, синтаксис вида си преобразуется к другому желаемому и тем компилятором обраба...
Это компилятор и есть, трансляция не обязательно в машинный код делается.
Студенты такой компилер на 3-м курсе пишут  :yes:
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 00:15
Угу, Си и Си++ прямо таки замечательные языки: сначала программист пишет свою реализацию ООП, свой тип данных для строк, свой механизм управления памятью, свой RTTI... а потом берёт другой язык, и приступает таки к решению поставленной задачи.
А другие отчего-то или медленные, или памяти жрут немерено.

GNU костылит Vala, со стороны годный язычок, но не пробовал ещё. Из минусов — привязка к GTK, которая выльется в 8 МБ (ЕМНИП) балласта под Windows.

Пока Гринь бороздит просторы препроцессора C, старики сражаются со змием окаянным, C++. Подробности. Реинкарнация Limbo, не иначе
ЛОР почитываем, в курсе. goto в списке «фич» веселит
Title: Имбецилы
Post by: Triton on November 13, 2009, 01:09
Как-то мы поменялись местами, теперь вы Си++ более защищаете, а я более на него нападаю.  :)

А другие отчего-то или медленные, или памяти жрут немерено.
Медленные... А куда торопиться-то? ;) Посмотрите на приложения, которые у вас обычно запущены в системе — 99.9% процентов времени они проводят в ожидании порции данных из потока или сообщения от оконной подсистемы. Ну будут они на обработку данных тратить пусть даже в 10, в 20 раз больше времени — никто не заметит.
Бредовость идеи писать полноценное веб-приложение на Си очевидна всем, но в то же время идея писать на Си (пусть даже и приплюснутом) текстовый редактор, чат или графическую морду к чему угодно воспринимается нормально. Хотя по сути это вещи одного порядка.
Статически типизированный язык с эффективным оптимизирующим компилятором нужен только в определённых нишах: ядро ОС, драйвера, СУБД, медиакодеки, библиотеки сжатия или шифрования и т.п. В других случаях использование Си ничем не оправдано, кроме "писали по-старинке 20 лет, и дальше будем писать".
И то в своей нише Си хорош только там, где нужно уж совсем низкоуровневые и системные вещи писать, благодаря тому, что у него практически отсутствуют требования к runtime окружению. В более высокоуровневых областях уже играют роль внеязыковые факторы, а не мнимые преимущества самого языка.


GNU костылит Vala, со стороны годный язычок, но не пробовал ещё. Из минусов — привязка к GTK, которая выльется в 8 МБ (ЕМНИП) балласта под Windows.
Заглянул в википедию:
Quote
Vala — язык программирования, предназначенный для прикладного и системного программирования на основе библиотек GLib Object System (GObject) рабочей среды GNOME/GTK+. Он был разработан Йюргом Биллетером и Раффаэле Сандрини.

Vala по своему синтаксису очень похож на C# и полностью реализует объектно-ориентированный подход. Программа на языке Vala транслируется в программу на языке C, которая в свою очередь компилируется в бинарный код целевой платформы со стандартными библиотеками C и GTK+ и выполняется со скоростью нативного приложения C.
"Язык... на основе библиотеки" и "транслируется в программу на языке C" - этапять, как говорится.
Сразу хочется спросить у авторов. Зачем оно такое? Какие проблемы, стоящие перед другими языками, оно решает? Какие имеет преимущества? Какую нишу планирует занять?
Или разработчикам просто хочется изобрести свой собственный С#, Java или Object Pascal?  :what:
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 01:39
Чтобы сразу было всем понятно: я перфекционист (т.е. имбецил).

Медленные... А куда торопиться-то? ;)
Чисто российский менталитет. Сожрём то, что дадут, и не подавимся. Мне есть куда торопиться, да и не только мне: погуглите «Windows тормозит».

Бредовость идеи писать полноценное веб-приложение на Си очевидна всем
Мне не очевидна :) Расскажите подробнее.

"Язык... на основе библиотеки" и "транслируется в программу на языке C" - этапять, как говорится.
Я не телепат, ваших суеверий не знаю. Что не так?

"Язык... на основе библиотеки" — о да, язык с синтаксисом, но без словаря — это мегакруто! :)

"транслируется в программу на языке C" — поддерживаю на 100%. Вместо того, чтобы писать кривой компилятор или фронтенд под какой-то определённый, лучше всегда в промежуточный си курочить. А там уже и все бинарные оптимизации будут, и поддержка 100% платформ, и бесшовная соместимость с существующими 99.9% C-based API.

Или разработчикам просто хочется изобрести свой собственный С#, Java или Object Pascal?  :what:
Не, они тормозят. Валу специально делают для написания gtk-софта, работающего со скоростью си. Обычно его и пишут на си, но на си получается слишком много ручной писанины. А тут ещё автоматическая работа с памятью, но без сборщика мусора, а на основе подсчёта ссылок + выхода/невыхода из области видимости. Прямо как то, о чём я мечтал :)

Какие проблемы, стоящие перед другими языками, оно решает?
Скорость, родное понимание GTK, отсутствие рукоблудия.

Она мне импонирует потому, что в правильную сторону смотрят мужики. Авось от привязки к GTK освободятся и налисапедят своё. А без привязки к GTK это будет практически идеал :)
Title: Имбецилы
Post by: myst on November 13, 2009, 01:51
И то в своей нише Си хорош только там, где нужно уж совсем низкоуровневые и системные вещи писать
Кабы Си обладал совсем уж низкоуровневыми возможностями. ;)
Title: Имбецилы
Post by: myst on November 13, 2009, 01:52
Не, они тормозят.
Object Pascal тормозит?
Title: Имбецилы
Post by: myst on November 13, 2009, 01:54
Да-а, что самое забавное, ДВУХпроходные компиляторы зачастую компилируют быстрее, чем ОДНОпроходные сишные.
У тебя и пруфы есть? :eat:
Вижу, пруфов таки нет. (http://kolobok.us/smiles/personal/beach.gif)
Title: Имбецилы
Post by: myst on November 13, 2009, 01:55
Только сейчас заметил. Это сишные компиляторы-то однопроходные? :o :o :o
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 02:24
Только сейчас заметил. Это сишные компиляторы-то однопроходные? :o :o :o
А зачем тогда forward declarations?
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 02:29
Quote
struct A
{
    struct B b;
};

struct B
{
    struct A a;
};

А теперь объясни, почему он пишет:

Quote
error: field ‘b’ has incomplete type

В два прохода разрешение результирующего размера делается запросто.
Title: Имбецилы
Post by: Triton on November 13, 2009, 10:40
Quote
struct A
{
    struct B b;
};

struct B
{
    struct A a;
};
  :uzhos:
Вы сами-то поняли, что написали?
Title: Имбецилы
Post by: Triton on November 13, 2009, 11:13
Чисто российский менталитет. Сожрём то, что дадут, и не подавимся. Мне есть куда торопиться, да и не только мне: погуглите «Windows тормозит».
Тормознутость программы в наименьшей степени зависит от языка реализации. Если, скажем, в алгоритме стоит квадратичная зависимость времени работы или требуемой памяти от объема входных данных, то какой там будет дополнительно множитель - 1 или 20 - уже абсолютно без разницы.
Вон в Virtual Box открытие окна настроек тормозит по 5, а когда и по 10 секунд. В установщике Suse окно конфигурации тормозит как проклятое. Неужели в обоих случаях пайтон виноват? ;)

"Язык... на основе библиотеки" — о да, язык с синтаксисом, но без словаря — это мегакруто! :)
Не так давно вы хвалили Си и порывались писать собственный ООП слой на макросах (изобретать синтаксис). В Си очень и очень маленький словарь стандартной библиотеки (а в freestanding варианте - и вовсе почти весь отсутствует).
В общем, опять взаимоисключающие параграфы.

Не, они тормозят. Валу специально делают для написания gtk-софта, работающего со скоростью си. Обычно его и пишут на си, но на си получается слишком много ручной писанины. А тут ещё автоматическая работа с памятью, но без сборщика мусора, а на основе подсчёта ссылок + выхода/невыхода из области видимости. Прямо как то, о чём я мечтал :)
Знаете, сколько уже таких языков... Начиная от академически строго Cyclone, через простую как пень Java и "философский" D и заканчивая десятком поделок на основе dotNET.
Что мешает сделать gtk-биндинг для любого языка (собственно, они и есть для многих языков) и не изобретать велосипед?
Title: Имбецилы
Post by: Triton on November 13, 2009, 11:22
И то в своей нише Си хорош только там, где нужно уж совсем низкоуровневые и системные вещи писать
Кабы Си обладал совсем уж низкоуровневыми возможностями. ;)
А каких именно не хватает, по вашему мнению?
Title: Имбецилы
Post by: Triton on November 13, 2009, 11:52
Только сейчас заметил. Это сишные компиляторы-то однопроходные? :o :o :o
А зачем тогда forward declarations?
forward declarations присутствуют by design. Если вы имеете ввиду многопроходный анализ семантики программы, то в Си++ этого добра выше крыши, благодаря неоднозначности грамматики. Даже имея перед собой полный набор классов и шаблонов, компилятор зачастую просто вынужден гадать на кофейной гуще, что за конструкция перед ним. И жутко тормозить.
http://yosefk.com/c  fqa/defective.html (http://yosefk.com/c++fqa/defective.html)


Title: Имбецилы
Post by: myst on November 13, 2009, 13:39
А зачем тогда forward declarations?
...
Это ещё не значит, что они однопроходные. Назови конкретные компиляторы.
Title: Имбецилы
Post by: myst on November 13, 2009, 13:42
А каких именно не хватает, по вашему мнению?
http://lingvoforum.net/index.php/topic,20180.msg402247.html#msg402247
Обсуждение там как-то не заладилось. :)
Title: Имбецилы
Post by: Triton on November 13, 2009, 13:51
На мой взгляд, таки да, не хватает возможности явно указывать разрядность целочисленных типов. Также не хватает конкретных правил по преобразованию этих типов друг в друга и возможности средствами языка отслеживать арифметическое переполнение.
Что-то вроде int( 8 ), checked unsigned(32) и т.п.
Но это уже Ада получится. Жаль, что Ада не так распространена как Си, это очень достойный язык.
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 14:36
и возможности средствами языка отслеживать арифметическое переполнение
Проверка задним числом — постфактум — в таких делах не уместна. Проверяйте заранее пределы. Средствами языка Си возможно всё.

Вы сами-то поняли, что написали?
?

Не так давно вы хвалили Си и порывались писать собственный ООП слой на макросах (изобретать синтаксис). В Си очень и очень маленький словарь стандартной библиотеки (а в freestanding варианте - и вовсе почти весь отсутствует).
В общем, опять взаимоисключающие параграфы.
Ой лол. Взаимоисключающим параграфом было бы, если бы библиотеки у Си не было вообще. А она есть.

Что мешает сделать gtk-биндинг для любого языка (собственно, они и есть для многих языков) и не изобретать велосипед?
Тем, что это рукоблудие. Vala — родной для gtk язык без оверхеда и без синтаксиса больного дисграфией имбецила. Биндинги — костыли и говно.
Title: Имбецилы
Post by: Triton on November 13, 2009, 14:56
и возможности средствами языка отслеживать арифметическое переполнение
Проверка задним числом — постфактум — в таких делах не уместна. Проверяйте заранее пределы. Средствами языка Си возможно всё.
Давайте тогда уж и обращение по нулевому указателю средствами ОС не отслеживать, и деление на ноль оставлять как есть, и игнорировать запись данных в невыделенную страницу памяти. Будте последовательны. Это же тоже проверки задним числом, а средствами языка Си возможно всё.

Вы сами-то поняли, что написали?
?
Значит не поняли...

Тем, что это рукоблудие. Vala — родной для gtk язык без оверхеда и без синтаксиса больного дисграфией имбецила. Биндинги — костыли и говно.
Уровень аргументации вполне ясен, спасибо.
Title: Имбецилы
Post by: myst on November 13, 2009, 16:07
Контроль типов транслятором — это тоже проверка задним числом. :eat:
Даёшь полную свободу машинного кода и безошибочных кодеров! (http://kolobok.us/smiles/artists/mini/alyur_mini_01.gif)
Title: Имбецилы
Post by: myst on November 13, 2009, 16:09
Я питал надежды по поводу BitC, но кажется, там всё стухло. :'(
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 16:48
Значит не поняли...
А вы поясните, если такой умный.

Давайте тогда уж и обращение по нулевому указателю средствами ОС не отслеживать, и деление на ноль оставлять как есть, и игнорировать запись данных в невыделенную страницу памяти. Будте последовательны. Это же тоже проверки задним числом, а средствами языка Си возможно всё.
Ололо, ОС как раз и написана на Си, так что вы опять фейлите. Всё это реализовно как раз средствами языка Си :D

Контроль типов транслятором — это тоже проверка задним числом.
С фигов ли? Отличай compile-time-проверку от run-time-проверки. Транслятор балуется с compile-time, а это НИКАК не проверка задним числом. Более того, код вообще не запустится, если что не так: проверки не будет ВООБЩЕ. Вот run-time — проверка задним числом, да. Но как раз она Сяхой не поддерживается.
Title: Имбецилы
Post by: Triton on November 13, 2009, 17:12
Значит не поняли...
А вы поясните, если такой умный.
Бесконечная рекурсия, всего и делов.


Давайте тогда уж и обращение по нулевому указателю средствами ОС не отслеживать, и деление на ноль оставлять как есть, и игнорировать запись данных в невыделенную страницу памяти. Будте последовательны. Это же тоже проверки задним числом, а средствами языка Си возможно всё.
Ололо, ОС как раз и написана на Си, так что вы опять фейлите. Всё это реализовно как раз средствами языка Си :D
Гринь, спокойно, санитары уже выехали.  :D
Фейлите как раз вы, вы даже не понимаете, о чём я говорю.
Title: Имбецилы
Post by: myst on November 13, 2009, 17:17
Ололо, ОС как раз и написана на Си, так что вы опять фейлите. Всё это реализовно как раз средствами языка Си :D
Которая?
Title: Имбецилы
Post by: myst on November 13, 2009, 17:22
С фигов ли? Отличай compile-time-проверку от run-time-проверки. Транслятор балуется с compile-time, а это НИКАК не проверка задним числом.
Всё, что после написания кода,  задним числом. Грамотное проектирование, грамотное кодирование — 0 ошибок, так? д'Артаньяны же не ошибаются. ;)
Title: Имбецилы
Post by: Triton on November 13, 2009, 17:25
Quote
run-time — проверка
Когда ваш файловый менеджер обнулит при переносе файл с вашими-очень-важными-данными, вместо того, чтобы свалиться по эксепшену; когда ваш сервер отдаст злоумышленникам все приватные данные (после банального переполнения буфера или же, например, в результате атаки на переполнения умножения в calloc), вместо того чтобы упасть и своим трупом закрыть проход врагу, вот тогда вы мне расскажете про ненужность автоматических проверок целочисленной арифметики.
Title: Имбецилы
Post by: myst on November 13, 2009, 17:27
Способность Си превращать салат в кровавое месиво уже не раз аукнулось на эти годы. Прав был старик Вирт, ох, прав...
Title: Имбецилы
Post by: Алексей Гринь on November 13, 2009, 17:45
Quote
Quote
Значит не поняли...
А вы поясните, если такой умный.
Бесконечная рекурсия, всего и делов.
Ну, блин, введите в пример третью структуру, не то важно. Компилер останавливается сразу же, даже не войдя в рекурсию, потому что он не знает, какой это такой тип - struct B. Ему нужно делать пинка под зад, то бишь форвард-декларейшен. Будь он двухпроходным, вошёл бы в рекурсию, да так бы и написал, что рекурсия.

Гринь, спокойно, санитары уже выехали.  :D
Фейлите как раз вы, вы даже не понимаете, о чём я говорю.
Ну вы-то можете говорить о чём угодно, только вот делаете вы не по теме. Обсуждались ограничения си. Вы в пример приводите вещи, как раз в 99.9% случаев реализованные на си.

Когда ваш файловый менеджер обнулит при переносе файл с вашими-очень-важными-данными, вместо того, чтобы свалиться по эксепшену; когда ваш сервер отдаст злоумышленникам все приватные данные (после банального переполнения буфера или же, например, в результате атаки на переполнения умножения в calloc), вместо того чтобы упасть и своим трупом закрыть проход врагу, вот тогда вы мне расскажете про ненужность автоматических проверок целочисленной арифметики.
Атаки переполнения и умножения в calloc существуют как раз из-за нежелания делать предпроверку, о которой я благую весть несу. Наличие в мире такой вещи, как "исключения", никак на это не влияет.
Title: Имбецилы
Post by: Triton on November 13, 2009, 18:04
Гринь, спокойно, санитары уже выехали.  :D
Фейлите как раз вы, вы даже не понимаете, о чём я говорю.
Ну вы-то можете говорить о чём угодно, только вот делаете вы не по теме. Обсуждались ограничения си. Вы в пример приводите вещи, как раз в 99.9% случаев реализованные на си.
Вы отличайте всё же палец от сами знаете чего. "Реализовано в языке" (как механизм с определённой семантикой) и "реализовано на языке" (как произвольный алгоритм) - это вещи разные совершенно.
Эти "вещи" реализованы аппаратурой процессора, ядром и принятой моделью исполнения процессов. А уж на чём они написаны - дело десятое. Хоть на басике, хоть в машинных кодах.
Когда программа делает *(int*)(NULL) = 123, то она прибивается операционной системой как глючная, а вовсе не потому, что такова семантика данной конструкций. По семантике это undefined behaviour, и с тем же успехом эта команда могла бы форматировать вам диск или менять разрешение на мониторе.

Атаки переполнения и умножения в calloc существуют как раз из-за нежелания делать предпроверку, о которой я благую весть несу.
Атаки переполнения существуют потому, что выбранный язык реализации настолько беспомощен, что не может гарантировать ровным счётом ничего.
Попробуйте переписать тот же багнутый алгоритм на Оберон, а потом его хакнуть - успехов.
Title: Имбецилы
Post by: Triton on November 13, 2009, 18:31
Кстати fclose(NULL) согласно спецификации также обладает undefined behavior, и, надо сказать, в glibc этот behavior таки действительно undefined. (Во всяком случае, в версии glibc приблизительно трехлетней давности.) Ни проверок, ни игнорирования NULL, ни вызова abort()...
Одна единственная опечатка if (file == NULL) мне стоила почти недели отладки программы, которая работала "почти всегда" и падала в рандомном месте.
Тоже нерадивый программист в моём лице виноват?
Title: Имбецилы
Post by: myst on November 13, 2009, 19:08
Попробуйте переписать тот же багнутый алгоритм на Оберон, а потом его хакнуть - успехов.
Кстати, из Oberon'а можно было бы сделать очень неплохой системный язык... Но гигатонны кода на C...
Title: Имбецилы
Post by: myst on November 13, 2009, 19:11
Quote from: http://en.wikipedia.org/wiki/BitC
In April 2009, Shapiro - driving force behind both BitC and Coyotos.[2] - announced that he had accepted a position at Microsoft to work on the Midori project, and that after August 2009 he would not be working further on BitC[3].

BitC is no longer under active development.
Ну точно стух. :'(
Title: Имбецилы
Post by: Алексей Гринь on November 14, 2009, 00:15
Будь он двухпроходным, вошёл бы в рекурсию, да так бы и написал, что рекурсия.
В моновом Сишарпе, нопремер:
  Struct member `monostest.C.b' of type `monostest.B' causes a cycle in the struct layout(CS0523)

Эти "вещи" реализованы аппаратурой процессора, ядром и принятой моделью исполнения процессов.
Это, уважаемый, фелософея и димагогея. Любое 2 + 2 в итоге «реализованы аппаратурой процессора». Что вы хотите этим доказать?

Вы отличайте всё же палец от сами знаете чего. "Реализовано в языке" (как механизм с определённой семантикой) и "реализовано на языке" (как произвольный алгоритм) - это вещи разные совершенно.
Ухты, налицо путание семантики и синтаксиса. Если си синтаксически не понимает исключений, переполнений или ООПа, это не значит, что оно нереализуемо семантически.

С точки зрения семантики, разницы между

Quote
if(a == 0)
   fatal("Divide by zero!");
result = b / a;
   

и

Quote
try
{
   result = b / a;
}
catch(DivideByZeroException e)
{
   fatal("Divide by zero!");
}

НЕТ.
То, что вы втираете, это синтаксис. Да, средствами синтаксиса не ничего такого не реализовано. Оно и правильно.

"Реализовано на языке", "реализовано в языке" - бла-бла-бла, эти постоянные бессмысленные категоризации никому не упёрлись.

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

Тоже нерадивый программист в моём лице виноват?
Да, это ваша ошибка, а не си.
Title: Имбецилы
Post by: Алексей Гринь on November 14, 2009, 00:34
ag@ag-laptop:~/Проекты/cf$ cat main.c
#include "core/cfException.h"
#include "core/cfInvalidCastException.h"
#include "core/cfObject.h"

int main(void)
{
    CF_TRY
    {
        cfObject* o = CF_BOX_BOOL(false);
        int i = CF_UNBOX_INT(o);
        printf("Triton is cool!!111\n");
    }
    CF_CATCH(e)
    {
        printf("There was an invalid statement, but I ignored it! :)\n");

        CF_CATCHED;
    }
    CF_END_TRY;

    return 0;
}
ag@ag-laptop:~/Проекты/cf$ cd ./bin/Debug
ag@ag-laptop:~/Проекты/cf/bin/Debug$ ./cf

There was an invalid statement, but I ignored it! :)
ag@ag-laptop:~/Проекты/cf/bin/Debug$
Title: Имбецилы
Post by: Алексей Гринь on November 14, 2009, 00:42
Quote
CF_CATCHED
facepalm.bmp
Title: Имбецилы
Post by: Triton on November 14, 2009, 01:14
Ок, я буду на вашем языке разговаривать с вами.
Это ваша ошибка и проблема, что вы не понимаете (к примеру) всей глубины механизма шаблонов Си++, которые давно вкурило всё прогрессивное человечество. Учите матчасть и гуглите, гуглите.
Наше учение истинно потому что верно.
Title: Имбецилы
Post by: sknente on November 14, 2009, 04:44
Еще один спор ни о чем? Ням-ням.
Title: Имбецилы
Post by: myst on November 14, 2009, 14:57
Еще один спор ни о чем?
Предмет спора не имеет значения, важен процесс. ;)