Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
Например с указателями под Паскалем работать очень неудобно.
Абсолютно не согласен, лучше чем в Паскале еще нигде не сделали работу с указателями, а вот в VC я просто матерюсь когда приходится делать тупое присвоение двух указателей разного типа!!!
Цитата:
Например есть под Дельфи шаблоны? А ведь это очень мощное средство языка С++ (очень облегчает работу с динамическими массивами, я без CArray жить уже не могу)!
Да шаблонов нету, но я пока на си не начал писать вообще о них не подозревал и прекрасно жил, как в принципе и дальше живу и что самое интересно не могу понять пока что ,а на кой они вообще нужны? Да, CArray и тому подобные штуки очень облегчают жизнь в VC , но ведт можно создать один раз класс и не мучаться больше. Так в Delphi и делают
Например с указателями под Паскалем работать очень неудобно.
Абсолютно не согласен, лучше чем в Паскале еще нигде не сделали работу с указателями, а вот в VC я просто матерюсь когда приходится делать тупое присвоение двух указателей разного типа!!!
О static_cast, dynamic_cast не подозреваете? Или смущает именно возможность подобного преобразования?
Цитата:
Например есть под Дельфи шаблоны? А ведь это очень мощное средство языка С++ (очень облегчает работу с динамическими массивами, я без CArray жить уже не могу)!
Странно, а чем std::vector < std::vector <your_type> > не устраивает? Или boost::multi_array?
Цитата:
Да шаблонов нету, но я пока на си не начал писать вообще о них не подозревал и прекрасно жил, как в принципе и дальше живу и что самое интересно не могу понять пока что ,а на кой они вообще нужны?
О STL и Boost, я так понимаю, вам ничего не известно
Цитата:
Да, CArray и тому подобные штуки очень облегчают жизнь в VC , но ведт можно создать один раз класс и не мучаться больше. Так в Delphi и делают
Но можно ведь создать шаблонный класс и не создавать кучу однотипных классов. Можно еще создать шаблон шаблонного класса ака стратегию, а затем на ее основе конкретизировать шаблоны классов. По этому поводу читать Джосаттиса и Александреску.
З.Ы. Я очень рад, что учился не на Паскале. Скромный совет начинающим - учитесь программирвоать на С++ или Java. Именно с ООП, а не с процедурной парадигмы, нужно начинать обучение.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
Скромный совет начинающим - учитесь программирвоать на С++
Вот тут соглашусь, сам не рад что с Паскаля начинал, но пока что мне эхто не мешает. Главное хорошо уметь програмить, а на чем это уже второе если не третье дело.
Цитата:
О STL и Boost, я так понимаю, вам ничего не известно
В плане Delphi мне такие штуки не знакомы
Цитата:
Но можно ведь создать шаблонный класс и не создавать кучу однотипных классов. Можно еще создать шаблон шаблонного класса ака стратегию, а затем на ее основе конкретизировать шаблоны классов.
ммм, а какая разница ? Классы с наследованием или шаблоны?
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Ray Adams
Цитата:
ммм, а какая разница ? Классы с наследованием или шаблоны?
Большая. Шаблон хорош тем, что я могу создать
std::vector<МОЙ СОБСТВЕННЫЙ ТИП> - т.е. что я в нем храню определяется на момент инстанцирования.
А вот если нет класса vector для моего типа - то мне придется его писать.
И еще, чего мне не хватает в Дельфях - макросов, а то inline функции я уже запарился писать..
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
Абсолютно не согласен, лучше чем в Паскале еще нигде не сделали работу с указателями, а вот в VC я просто матерюсь когда приходится делать тупое присвоение двух указателей разного типа!!!
ИМХО, наоборот, в Паскале указатели ОЧЕНЬ неудобны по сравнению с Сишными.
Ray Adams Пробовали к видеопамяти на Паскале обращаться???
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
ИМХО, наоборот, в Паскале указатели ОЧЕНЬ неудобны по сравнению с Сишными.
Приведи пример неудобства на Паскале и удобства на Си
Цитата:
Пробовали к видеопамяти на Паскале обращаться???
Прекрасно обращался под Досом, без всяких проблем.
По типу к примеру вот такого, дата БИОСа
data:array[1..9] of char absolute $FFFF:5;
Я же говорил про неудобность делать приведение типов при работе с указателями на СИ, чего делать не надо на Delphi. Если у меня два указателя, один указывает на word другой на int то зачем при a=b я должен b приводить к типу а, если оба они по сути указатели!
Добавлено спустя 1 минуту, 28 секунд: А так по самой работе оба языка отлично работают с указателями.
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Ray Adams
Цитата:
Я же говорил про неудобность делать приведение типов при работе с указателями на СИ, чего делать не надо на Delphi. Если у меня два указателя, один указывает на word другой на int то зачем при a=b я должен b приводить к типу а, если оба они по сути указатели!
А это сделано, чтобы такие умные, как ты не делали ошибок. И код читабельнее. Правда приведение типов С++ меня бесит - пишу всегда класикой, в скобочках.
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
Правда приведение типов С++ меня бесит - пишу всегда класикой, в скобочках.
Вот видиш!
Я когда пишу свой код, я сам знаю что у меня и куда лепиться, так что на кой компилятор должен накладывать такие жестокие ограничения! И код хоть и читается легче, но уж совсем не меньше становится.
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
data:array[1..9] of char absolute $FFFF:5;
Бррр. Что за ужасный код? А если потом приспичит поменять указатель?
Цитата:
если оба они по сути указатели!
Давай ты присвоишь указатель на класс указателю на инт и к последнему обратишься как к указателю на класс. Прога упадет А компилятор начнет ругаться, если явно не приводить
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
Давай ты присвоишь указатель на класс указателю на инт и к последнему обратишься как к указателю на класс.
брр, а зчем мне такой ужас делать?
Кстати data:array[1..9] of char absolute $FFFF:5; очень даже нормальный код для паскаля ничего в нем страшного нету. Так как я привязываю переменную к ВСЕГДА стандартному адресу в памяти, правда это под ДОС было. А если меняется адрес то: data:^array[1..9] of char ; data:=Pointer($FFFF); к примеру Под Виндами я уже такое давно не делаю, хотя штука очень удобная если тебе надо к одному типу обратиться как к совершенно другому без явного и не явного приведения типа Очень удобно
Добавлено спустя 8 минут, 56 секунд:
Цитата:
авай ты присвоишь указатель на класс указателю на инт и к последнему обратишься как к указателю на класс.
Кстати все прекрасно сработает так как и долно работать!
Пример.
Код:
TMyClass=class(TObject) public procedure DoSomethink(); end;
procedure TMyClass.DoSomethink; begin MessageBox(0,'Test','Test',0); end; //теперь код в обработчике для нажатия обычной кнопки
procedure TForm1.Button1Click(Sender: TObject); var pI:^Integer; P:TMyClass; begin P:=TMyClass.Create; pI:=@P; TMyClass(pI).DoSomethink; P.Free; end;
так и должно работать
pI..DoSomethink; не сработает комппилятор даже не даст такое сделать, тоже самое можно сделать и на C++, тольк там вот это присваивание pI:=@P; придется делать с приведением типа, а тут не надо. Я про это и говорю, писать много лишнего кода приходится.
Member
Статус: Не в сети Регистрация: 12.02.2004 Откуда: г. Новосибирск
Apexman Паскаль приучает структурировать код, и вырабатывает навыки структурирования кода.
Насчет использования Паскаля как учебного языка для начинающих-я только за (сам на нем учился, правда после Бейсика)!
Т.е. в С-подобном синтаксисе, коим "страдают" большинство современных языков программирования, код очень неструктурированый? Отсутствие (вложенных) процедур в вводит в заблуждение, а объявления в любом месте кода - худшее из зол.
Одно только наличие namespace в C++, package в Java дорогого стоит...
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
а объявления в любом месте кода - худшее из зол. Wink
Не зудшее из зол, но тоже не азти вариант. Я понимаю это удобно и быстро, но переменные разбросаны бывают по всему коду, иди потом ищи где и что обьявлял.
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
Цитата:
А компилятор начнет ругаться, если явно не приводить
Я про С. Что он правильно ругнется!
Цитата:
объявления в любом месте кода - худшее из зол
В С такого нет. Только в С++. зато удобно писать код, работающий со стековыми переменными.:
Цитата:
double a; <- глобальная переменная
какой-то код функции .... { int a; <-стековая переменная. Видна только внутри блока {....} А тереь предстаьте вместо int'а менее тривиальный класс. например, класс реализующей динамическое выделение памяти. Удобно! } .... какой-то код
Цитата:
Паскаль приучает структурировать код, и вырабатывает навыки структурирования кода.
Спорить не буду. Это так.
Цитата:
Отсутствие (вложенных) процедур в вводит в заблуждение
Это Вы про что?
Добавлено спустя 2 минуты, 49 секунд:
Цитата:
Кстати все прекрасно сработает так как и долно работать!
НЕЛОГИЧНО!
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Ray Adams Не все такие умные - ошибок неизбежать. Это наверное полезно для больших проектов.
Кто видел дополнительны своства перемнных( __atribite__ ) в Linux. Вот безграничный простор. Не то, что С. И локольные для потока, и регистровые и хз знает ещё какие(не разобралься пока)
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
Root А можно сидеть и там и там:
GUI пишется на Дельфях (действительно быстро и компактный код),
а методы обработки данных требующие сложных алгоритмов, на Си или Ассёмблере, и все цепляется как dll.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения