Member
Статус: Не в сети Регистрация: 12.02.2004 Откуда: г. Новосибирск
Asteroid Ну на вкус и цвет....
Цитата:
Так что за билдер никого нет???? Неужели он так плох?
Плох не плох.... Если ты на нем сделаешь быстрее, круче итд чем на VC, то чем это плохо?
А все равно все сведется к маш кодам, так что можно и в них писать вот сколько на это времени только уйдет? Весь вопрос в скорости создания ПО. Софт слишком быстро стареет, поэтому этот вопрос ключевой (в свое время OS/2 проиграла форточке и-за того, что IBM потратила время на отладку и тестирование). Поэтому, если в какая-то среда может дать выигрыш в скорости, функциональности итд для КОНКРЕТНОЙ задачи, то почему бы не использовать именно эту среду? Среда является ИНСТРУМЕНТОМ для решения задач! Можно конечно и микроскопом гвозди забивать....
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Ray Adams или на GCC А насчет билдера... К сожалению, Борланд (как и MS) решил что они самые крутые и стандарты им не указ Поэтому, некоторые фрагметы кода, мягко говоря, работают не так как должны, а грубо говоря - ввобще не работают.
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Есть. И к сожалению, очень грубые.
Привожу пример:
Код:
#include <iostream> using std::cout; using std::endl;
struct test_t { int val; test_t() { cout<<"Конструктор по умолчанию"<<endl; } test_t(int val) : val(val) { cout<<"Копирующий конструктор"<<endl; } ~test_t() { cout<<"Деструктор со значением "<<val<<endl; } };
int main() { size_t arg_size = sizeof test_t(666); cout<<"Размер структуры test_t = "<<arg_size<<endl; return 0; }
По правилам ANSI C++ sizeof вычисляется на этапе компиляции. Так и есть, для gcc, vc++. Но билдак не вызывая ни один конструктор вызывает зачем-то деструктор... Теперь предсавь себе, что я пишу код:
У меня не предусмотрен конструктор по умоланию, ибо он никогда в коде вызываться не будет!
Все нормально, на всех компиляторах кроме BCB. На BCB естественно, access violation.
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Ага, свои. Типа вызова деструктора без конструктора.. И еще один камень в огород Борланда (точнее, на те грядки, где произрастает С).
Насколько неплохо реализована VCL в Дельфях, настолько криво это сделано в С.
В С VCL целиком "утянута" из дельфевого кода, и не использует некоторые возможности С.
Например, в качестве списков используется TList, хотя C предлагает более удобный механизм vector.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Avaddon А я и писал выше, что Builder это игрушка, которую делали на основе Delphi и советовал юзать VC++.
Цитата:
Ага, свои. Типа вызова деструктора без конструктора..
Я просто не совсем твой код понял, так как сам никода не связывался с такими делами. На Delphi не бывает записей (Delphi record/ C++ struct) которые ведут себя как обьекты. Иначе бы проверил.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Type
TAlaCStruct = object
fld: Integer;
constructor Init;
destructor Done;
procedure PrintRec;
end;
....
Это не запись! Это обьект, ты путаеш его с
Код:
Type MyRec=record id:byte; ... end;
Добавлено спустя 2 минуты, 12 секунд: Хотя хелп и пишет
Цитата:
Since object types do not descend from TObject, they provide no built-in constructors, destructors, or other methods. You can create instances of an object type using the New procedure and destroy them with the Dispose procedure, or you can simply declare variables of an object type, just as you would with records.
Но это не одно и тоже. Вообще я давно уже отошел от object, для нормального дела есть class!
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Ray Adams Не путаю. Просто говорю, что сишные структуры с методами могут быть реализованы в паскакале через объекты А то, что паскаль не вызвает автоматически конструкторы/деструкторы это известно. class - чисто динамическая структура.
Да, она удобнее в большинстве случаев.
Однако, иногда требуется создать статическую структуру данных+методы их обработки.
Выход - либо писать пользуясь процедурной идеологией, либо использовать объекты.
Причина отказа от динамики - количество объектов фиксированно + требуется быстро создавать их.
быстро - в пределах нескольких тактов.
Member
Статус: Не в сети Регистрация: 12.02.2004 Откуда: г. Новосибирск
В си стандарты - извечная проблема... столько мучился с совместимостью Borland C++3.1 и Turbo C++ что просто ужас...
Тоже постоянные ошибки памяти!
Что поделать - ANSI C слишком гибкий и позволяет добавлять/убирать и бог что еще делать с компилятором
Недавно столкнулся со следующей проблемой: программа написаная под VC 7.0
РАБОТАЕТ на: Windows XP, 98
НЕ РАБОТАЕТ на Windows NT sp6!
Ругается на память, что это может быть? Может кто-то сталкивался с подобными вещами?
На ЭнТи нет возможности поставить среду
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Avaddon Ну насчет этого я вкурсе , а насчет совместимости, кто их знает о чем они думают. Производители такого софта иногда просто плюют на стандарты! Паскаль в Delphi тоже уже очень далек от стандартов
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Ray Adams Зато Дельфийский паскаль хорош в одном отношении:
он почти в гордом одиночестве Кто в последний раз юзал сторонний компилер паскаля? а? Или кто-нибудь кроме Дельфей что-нить паскалевское знает?
(FPC, паскаль в *NIX:) и еще ПАРА других)
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Root
Цитата:
он почти в гордом одиночестве
Зато в каком одиночестве! Тотже FreePascal постоянно обещает совместимость с кодом Дельфи . Можно сказать Borland сам придумал новый стандарт Pascal. В принципе не вижу тут ничего страшного, альтернативы Паскалю от Борланда пока нету. Сам лично тыкал несколько вариантов, но все они ой как далеки от совершенства.
Другое дело Си, на нем многое постояное, если не сказать ВСЕ , в плане ОС. Так что надо как минимум поддерживать стандарты.
Это к примеру также относится и серверам базы данных. Они также обязаны поддерживать SQL стандарт, а все что выше это уже личные навороты.
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
А я и писал выше, что Builder это игрушка, которую делали на основе Delphi и советовал юзать VC++.
Я тож про это же говорил. Поносно получаетсяю...
Цитата:
новый стандарт Pascal.
Так оно и получается, но проблемы нет, т.к. ТОЛЬКО Борландом здесь и пользуются А остальные компилеры гораздо хуже (чего только стоит конвертер Pascal->C) и они, как правило, подстраиваются под Боралнд. Хотя FPC, к примеру, отличился поддержкой кривых расширений Паскаля вроде Сишных стандартных операторов (++,-- и прочие) А теперь на тему стандартов С/C++. Тут уже упоминали
Цитата:
ANSI C++ 99.
А сколько ЕЩЕ было стандартов? Много. Вот и путаница. Воистину, ЛУЧШЕЕ враг ХОРОШЕГО.
Был хороший язык С, но людям захотелось лучшего и начали его дополнять, дополнять и дополнять. Каков результат? Куча несовместимых реализаций! Даже в пределах линейки компиляторов одной фирмы! Я тут пытался VC3 проект скомпилить в VC6. Не компилится! Почему? А стандарты разные На практике иногда проще переписать программу, чем боротся с этими багами.
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Member
Статус: Не в сети Регистрация: 08.05.2004 Откуда: Novosibirsk
Root ты б еще попробовал скомпилять проект из VC1 в VC7.NET!!!)))))
Кстати всем C forever.С - это САМЫЙ универсальный и гибкий язык. А на делфях у нас и девушки лабают без проблем!!!!!!!!!!!!!! И касяков в делфях просто *****. Я как то к базе данных интерфейс лабал. Пришел _ManiaC_ и запустил дебаг - потом час винду переставляли(ничто в этом мире ее больше не привлекало))))))))))
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения