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