Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на C / C++

Выпуск № 632
от 24.11.2004, 10:10

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 2043
Отправлено ответов: 3876
Активность: 189.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

CrackLab
Статус: Опытный
Общий рейтинг: 113.98
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 109.9
[Подробней >>]
gvozdok
Статус: Начальный
Общий рейтинг: 122.58
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 118.64
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 2036. Шалом еще раз! Хотелось бы уточниться вот по какому вопросу: Никлаус Вирт считает широкое распространение и использование таких языков как си си с плюсами вообще неправильным, как языков без строгой типизации типов :-) написание софта на них таит в с... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 2036

Шалом еще раз! Хотелось бы уточниться вот по какому вопросу: Никлаус Вирт считает широкое распространение и использование таких языков как си си с плюсами вообще неправильным, как языков без строгой типизации типов :-) написание софта на них таит в себе принципиальные ошибки(хотя бы знаменитое Buffer Overflow) и много еще чего чем грешит хоть Windows хоть те-же Юникса. Ваше мнение по этому вопрсу очень приветствуется. Кстати компиляторы от BorlanD® всегда считались более удачными по сравнению с МS - не знаю что вы на них баллоны так катите. И последнее: а как же Ява, может будущее вообще за ней.
Всем спасибо. Отдельное спасибо CrackLab.



Вопрос отправлен: 21.11.2004, 10:03
Отправитель: Captain NEMO (diodon@mail.primorye.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает CrackLab

Здравствуйте, Captain NEMO!
То что С++ позволяет переопределять типы - это просто замечательно и сталкнувшись с С++ поближе вы в этом убедитесь. Дело в том, что на самом деле работа в памяти в основном происходит с 4х байтовыми ячейками, которые назывются dword (double word). Огромное количество типов - это производные типы от dword. Например int - это тоже 4х байтовая ячейка - тот же dword - только при работе с int компилятор работает с его содержимым, учитывая что оно может иметь знак, т.е. быть от -2.1 млрд. до +2.1 млдр. Идем дальше - unsigned int - это тот же dword. Различного рода указатели - это тоже 4х байтовые адреса в памяти, указывающие на какие-либо данные, т.е. это тот же dword. Так вот таких типов очень много и при работе очень часто приходится переопределять один тип другому.
Возьмем такой пример. Например при смене закладки Таб Контрола нам нужно скрыть старую закладку. Для этого делаем так:
TCITEM MyItem;
TabControl->Get Item(TabControl->GetCurSel(), &MyItem);
Теперь объект MyItem типа TCITEM в своем члене lParam хранит указатель на окно (закладку). член lParam имеет типа LPARAM (который в windef.h объявлен так: typedef LONG_PTR LPARAM;)
Но нам нужно как-то работать с окном (с закладкой, которую надо скрыть), т.е. нам нужен указатель на оконный тип (например CWnd* в MFC), но наш параметр lParam имеет тип LPARAM, хотя мы знаем что это просто адрес, указывающий на объект закладки (окна). Что же делать? Ведь типы разные? Тут и помогает переопределение типов. Теперь мы можем скрыть закладку очень просто:
CWnd *CurTabWnd = (CWnd *)MyItem.lParam;
CurTabWnd->ShowWindow(SW_SHOW);
Думаю вы понимаете что происходит в этих двух строчках. Видите как выручает переопределение типов? Это прорыв в программировании, а не минус С++. Поэтому слова Вирта, кажутся просто смешными, что неудивительно слышать от создателя Паскаля =)
Теперь по поводу удачных компиляторов от борланд. Ну даже не з наю - по мне так компиляторы от микрософт работают стабильнее, т.е. компилируют сложные моменты без проблем, в то время как компиляторы от Борланд на пустом месте находят какую-то ошибку и отказываются компилировать программу. Такое бывает очень редко но бывает. Может быть у других людей другой опыт и для них Борланд работает стабильнее.
По поводу java. Слышал я такой слушок, что мол java разиввается бла бла бла. Но посмотрим правде в глаза. Вы верите что в ближайшие 5 лет она станет новым флагманом среди языков программирования? Я - нет. Позже - может быть. Но меня мало волнует что там будет через 5-7-10 лет. Сейчас я выбираю то, что распространено сейчас.

Ответ отправлен: 21.11.2004, 18:33
Отправитель: CrackLab


Отвечает vitya

Добрый день, Captain NEMO!
C++ язык со строгой типизацией. Буффер оверфлов это ошибка программиста, кроме того серьезные компиляторы, например вц начиная с версии 7.0 имеют в отладочном режими возможность проверять буффер оверфлав и т.д.
А популярность языка определяется спросом и предложением.
Если писать на стандартном Ц++, тогда программа полностью переносима. Правда для UI и работь с ФС приходится изхитряться, но в целом возможно.

Ответ отправлен: 21.11.2004, 12:26
Отправитель: vitya


Отвечает gvozdok

Доброе время суток, Captain NEMO!
Мало ли что там считает Никлаус Вирт! Да С++ не идеал, в теории наверное Паскаль лучше, но не практике! Реально в жизни большинство софта(который действительно использьзуется) написано на Visual C++, например Winamp, FlashGet, MyIE2, 1С и другие. Прошарь сам утилитой fileinsPEctor XL и убедись. Так что факты на лицо. На Делфях тоже есть хорошие проги - TheBat!, Frigate, но это скорее всего исключение чем правило. А по большому счету, какая разница не чем написано - главно чтобы все устраивало конечного пользователя! Ведь ему то по фигу на чем написано! Я пишу на VC++ и не сколько не жалею, а наоборот! Чего и тебе желаю! Успехов!

Ответ отправлен: 21.11.2004, 18:29
Отправитель: gvozdok


Отвечает _vt

Приветствую Вас, Captain NEMO!
С каких это пор язык C++ стал языком "без строгой типизации типов"? ;-)
Тебя никто не заставляет писать на си и плюсах, но только если ты пишешь под ОС Windows, то и выбора другого особо нету... Компиляторы от Borland - это хорошая штука, устаревшая только... ;-)
Ты собственно с какой целью интересуешься? Если ты хочешь выбрать то, с чего начать обучение, то учить надо все языки, а начинай с того, что тебе по душе.
* Origin : I′d like to change the world, but I have no source code


Ответ отправлен: 21.11.2004, 20:12
Отправитель: _vt



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (20)
C / C++ (17)
Perl (4)
Builder / Delphi (18)
Pascal (19)
Basic / VBA (10)
Java / JavaScript (6)
PHP (17)
Криптография (6)
WinAPI (17)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (59)
"Железо" (38)
Поиск информации (20)
Администратору
Windows NT/2000/XP (34)
Linux / Unix (18)
Юристу
Гражданское право (10)
Семейное право (5)
Трудовое право (8)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.





http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное