LINUX.ORG.RU

о языках и С++ в частности


0

0

Знаю НТМЛ. Вот шарю себе ПХП потихоньку и присматриваю чего бы следующим бы учить. Жабу в список я внёс (надо знать, хотя бы на уровне скриптов), а что потом??

Вот здесь обсуждали поделие Стауструпа: http://www.linux.org.ru/view-message.jsp?msgid=299952&scroll=group&ba...

остаюсь при своём мнении, что сама идея обьектно-ориентированных языков хороша, но реализациия их ниже плинтуса.Помнится, оччень уважаемый мною Луговской как то сьязвил :"С++ не язык, а микроассемблер с классами" (цитирую по памяти,посему могу ошибаться). Мои знакомые программисты также скептически относятся к перспективам С++.

Посему вопрос к сообществу: Чего будет перспективно?? и что должно умереть как можно быстрее??

Лично для меня оценка С++ во многом базируется на том, что Юникс/Линукс писали на С, а вот кривенькую виндозу как раз на С++. результат, как говорится, налицо.

Tangeizer
() автор топика

дет сад, ей Богу))

anonymous
()

всегда есть ниша для микроассемблера с классами. Более того в Си++ некоторых мощных вещей, которые можно абстрактно формализовать и добавить в переносимый язык просто нет. Даже нет переменных-меток! Виртульное наследование тоже сделано не так как надо.

Просто язык/интерфейс придумать несложно. Гораздо сложнее придумать интерфейс/язык который бы хорошо ложился на внутреннее представление/архитектуру, но при этом казался элегантным и абстрактным.

Многим людям было бы просто неинтересно писать не на "микроассемблере с классами". Ну правда ходят слухи что сейчас выработался новый вид программистов у которых понятия оптимизация вообще в головах нет. Вот пусть они на Лиспе и пишут..

dilmah ★★★★★
()

А причём Лисп?? :):) Когда я работал в Автосаде и понадобилось что-то наваять в автолиспе (что не так уж далеко от чистого Лиспа), то вся наша бригада с матом пыталась 3 месяца врубиться в эту хрень (а казалось бы...). После чего плюнули, поставили паскальщику пиво, он наваял нам прогу за вечер и всех-то делов. Запускать её правда приходилось отдельно, потом результат ручками перенабивать в Сад, но заказчика устроило :) а если бы нет?? Так что к Лиспу у меня отношение не кислое :))

Как мне кажется, хаскель имеет неплохие перспективы сместить С++ и отправить его туда, где ему и место...

Ну ХТМЛ с ПХП я ручками пишу, и ничего, отсутствием логики и нежеланием оптимизировать не страдаю :) Просто, имхо, язык с такими дикими операторами как в С++ не имеет права на жизнь. я не знаю ни одного "плюсового сиониста", который бы мог работать без справочника. А Вот сколько не видел программеров на других языках - всё пучком, прожить без справочника, хоть и с трудом, но смогут.

Пример кода на С (на с++ ещё хуже):
for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2 ))P("| "+(*u/4)%2)

Ну, попытайтесь разобраться здесь, грамотеи, а я вас послушаю...

Tangeizer
() автор топика

Зы: логическая опечаточка - "отсутствием логики и нежеланием оптимизировать не страдаю" надо читать как то, что я как раз стараюсь максимально оптимизировать код и выкинуть всё что может заглючить! %)%)

Tangeizer
() автор топика

> Помнится, оччень уважаемый мною Луговской

мной тоже уважаемый. но, видимо, по другим причинам (например, как естественный (прирожденный) к*т)
по этотой причине большую часть его наездов на с/с++ всерьез не принимаю, увы.

> Чего будет перспективно??

Смотря где. ИМХО сильно зависит от задач.

> и что должно умереть как можно быстрее??

а зачем?

anonymous
()

> вся наша бригада с матом пыталась 3 месяца врубиться в эту хрень (а казалось бы...).
> Так что к Лиспу у меня отношение не кислое :))

Это все от качества ума сильно зависит.
Мне лисп и scheme очень даже нравятся, хоть на них и не пишу (иногда, ну и на схеме под гимп разве что).

>Просто, имхо, язык с такими дикими операторами как в С++ не имеет права на жизнь.

не нравится -- не ешь, но и другим не порть аппетит.

> я не знаю ни одного "плюсового сиониста", который бы мог работать без справочника.

ы? тогда он попросту ламер, если он без справочника по _языку_ работать не может.
ничего мода на с++ проходит, надеюсь, скоро таких придурков останется мало.
другое дело, заглядывать в справочник по LIBC, STL и прочим библиотекам.

> А Вот сколько не видел программеров на других языках - всё пучком, прожить без справочника, хоть и с трудом, но смогут.

Справочник по _языку_ не нужен, а вот без справочника по _функциям_ не обойтись. ПХП, к примеру, держится только на гигантском количестве функций. Без справочника не обойтись, если, конечно, пишется не "Hello world".

>Пример кода на С (на с++ ещё хуже):
>for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/ 8)%2 ))P("| "+(*u/4)%2)
>Ну, попытайтесь разобраться здесь, грамотеи, а я вас послушаю...

А зачем? На любом языке можно написать черте чего. Тот , что на С это сделать проще (возможно) не есть доказательство чего бы то ни было.

anonymous
()

справочник по языку не нужен?? так это сложный вопрос.. у меня постоянно открыто окно со стандартом, потому что постоянно возникают вопросы..

anonymous
()
Ответ на: комментарий от Tangeizer

Ну, Автолисп - то ещё убожество. Там даже макр нормальных не было.

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

Antichrist
()

Как не крути, а С++ жил и жить будет....
И никто его не вытеснит. Его ниша IMHO почти никем не занята.
Разве что Дэлфи....
Кстати я сам к нему стараюсь прибегать в очень редких случаях, там где уж на С будет больно хреново.

Dead ★★★★
()
Ответ на: комментарий от Dead

Гонишь. Дельфи из другой оперы совершенно. На ту же нишу, что и C++, претендуют как минимум два многажды более правильных языка - Objective C и Ada. C можно поделить между C-- и Cyclone.

Antichrist
()

знаешь Што, друг любезный, не платье красит человека и не язык делает программера... Да знай ты хоть все диалекты С/С++ без справочника, помни наизусть все регэкспы Перла и классы последней жавы... Все это полная фигня. Язык это средство выражения - было б что выражать. Умный человек и на туземном наречии умные вещи говорить будет. Но сдается мне, что раз ты задал такой вопрос задал (особенно меня поразило, что чел сказал, что знает html (это программирование?!?) и php но учень уверенно записал реализацию всех (!!!!) ОО языков ниже плинтуса)... даже не знаю как сказать, чтоб не обидеть... Открывай основы. Буч, Кнут, Сомервил... Народ, кто еще знает что-нить, чтоб было инвариантно языку?

laban
()

AFAIK языка Делфи не существует
а есть Object Pascal

joker
()

лисп живет с 54-го чтоли года и развивается до сих пор - так что lisp не умрет никогда :) - все гениальные вещи просты - в лиспе нет ничего кроме атомов и cons целов - точно также как в этом мире нет ничего кроме атомов и связок атомов ...

lg ★★
()

>а есть Object Pascal
точно... а дельфи это ide
(есть еще отдельные личности, утверждающие, что в совершенстве владеют Visual C++ - таже байда, что и дельфи)

laban
()
Ответ на: комментарий от laban

Не поверишь, но в Visual C++ компилятор настолько специфичен (+ разширения именно от Micrsoft), и куча интегрированных вещей, которые претендуют на строчку "в совершенстве знаю _именно_ Visual C++".

anonymous
()

>>Visual C++ компилятор настолько специфичен

приз в.. тьфу! пример в студию!!!

laban
()

Example

// Example of try-except and try-finally statements
#include "stdio.h"

void main()
{
   int* p = 0x00000000;   // pointer to NULL
   puts("hello");
   try{
      puts("in try");
      try{
         puts("in try");
         *p = 13;    // causes an access violation exception;
      }__finally{
         puts("in finally");
      }
   }__except(puts("in filter"), 1){
      puts("in except");
   }
   puts("world");
}
This is the output from the example, with commentary added on the right:

hello
in try         //fall into try
in try         //fall into nested try
in filter      //execute filter; returns 1 so accept
in finally     //unwind nested finally
in except      //transfer control to selected handler
world          //flow out of handler

anonymous
()

> int* p = 0x00000000; // pointer to NULL

LOL! я же говорил что С++ это зло - вот вам подтверждение, null pointer и pointer to null pointer - это разные вещи .. если под NULL понимать null pointer то коментарий совершенно кривой - и вообще null pointer не обязательно 0 - но в данном случае конечно компилер разрулит 0 до null pointerа(если он[компилер] писан по правилам[одно из них что в поинтеровском контексте интерпретировать 0 как null pointer]), но в извраных конструкциях ты можешь получить что где-то записан 0 - а ты думаешь что там null pointer .. и зачем писать 0x000000000 не проще ли написать 0 - ли в C++ 0x0000000 не равно 0?

lg ★★
()

> коментарий совершенно кривой

вообще-то это цЫтата из MSDN.

> не проще ли написать 0

В С++ так оно и есть. Вместо NULL пишется 0, при этом разруливаются типы, т.е. (char *)0 это не то же самое, что и (int *)0
Вобщем, читайте Штрауса, или почитайте хоть что-нибудь (желательно толковое) по языку, который критикуете.

anonymous
()
Ответ на: комментарий от laban

Буча то вычеркни из списочка. Дурак он. Не надо его читать...

Antichrist
()
Ответ на: комментарий от Dead

C и Паскаль - таки да, тождественны. C++ от Object Pascal-я отличается очень сильно - наличием средств метапрограммирования.

Antichrist
()

> вообще-то это цЫтата из MSDN. 
LOL!

> В С++ так оно и есть. Вместо NULL пишется 0, при этом 
> разруливаются типы, т.е. (char *)0 это не то же самое, что и (int*)0 
> Вобщем, читайте Штрауса, или почитайте хоть что-нибудь (желательно 
> толковое) по языку, который критикуете.

LOL! да да - главное побольше читать толковых книжек :))) - там 
наверное написано что NULL это зарезервированное слово

и видимо приведен пример как узнать хорошим ли компилятором вы 
пользуетесь:

 if ((char*)0 != (int*)0)
     {
    puts("GOOD compiler\n");
     }
 else
     {
    puts("BAD compiler\n");
     }

читай выше - 0 в поинтеровском контесте заменяется(по идеи должен 
заменятся) на null-pointer ..

lg ★★
()

> LOL!

Все с тобой ясно. Протрезвись сначала.

anonymous
()

>>Буча то вычеркни из списочка. Дурак он. Не надо его читать... Аргументацию пожалуйста! >>а вот кривенькую виндозу как раз на С++. Можно ссылку на исходники? Это треп чистой воды. WinNT 4.0 вышел в 1994 году, когда С++ пешком под стол ходил, кроме того даже сайчас у мелкософта НЕТ компилятора С++, есть только VC++, который даже стандарт 1998 не держит на самом элементарном уровне. И вообще, кто знаком с коммерческой разработкой софта в таких масштабах, тот понимает, что проблема тут далеко не в языке, и даже не в кривезне рук отдельных программистов мелкософта. Читайте для начала того же Буча >>по мне так C=pascal C++=Делфи... C/C++ - это наилучшим образом стандартизованные языки, чего не скажешь о Паскале => переносимость С/C++ и непереносимость паскаля А делфи это вооще не язык, С++=Дельфи - выражение из той же бочки, что С++=VC++=MFC >>Objective C и Ada Ну-ну - Objective C уже давно на ладан дышит (собственно изначально), насчет Ada - посмотрим конечно, но сильно сомневаюсь >>Виртульное наследование тоже сделано не так как надо. А как надо? Вообще необходимость использования виртуального наследования - это в 99% случаев показатель рукожопости программиста >>Visual C++ компилятор настолько специфичен (+ разширения именно от Micrsoft) Ага - расширения еще ладно, а вот кастрация стандарта - это соверщенно непростительно

И вообще, господа - изучайте Жабу - отдичный язык для домохозяек. Как тут было отмечено, С++ потерял популярность - и слава богу, хоть ламеры на нем теперь не пишит

dmshadow
()

>>Буча то вычеркни из списочка. Дурак он. Не надо его читать... Аргументацию пожалуйста! >>а вот кривенькую виндозу как раз на С++. Можно ссылку на исходники? Это треп чистой воды. WinNT 4.0 вышел в 1994 году, когда С++ пешком под стол ходил, кроме того даже сайчас у мелкософта НЕТ компилятора С++, есть только VC++, который даже стандарт 1998 не держит на самом элементарном уровне. И вообще, кто знаком с коммерческой разработкой софта в таких масштабах, тот понимает, что проблема тут далеко не в языке, и даже не в кривезне рук отдельных программистов мелкософта. Читайте для начала того же Буча >>по мне так C=pascal C++=Делфи... C/C++ - это наилучшим образом стандартизованные языки, чего не скажешь о Паскале => переносимость С/C++ и непереносимость паскаля А делфи это вооще не язык, С++=Дельфи - выражение из той же бочки, что С++=VC++=MFC >>Objective C и Ada Ну-ну - Objective C уже давно на ладан дышит (собственно изначально), насчет Ada - посмотрим конечно, но сильно сомневаюсь >>Виртульное наследование тоже сделано не так как надо. А как надо? Вообще необходимость использования виртуального наследования - это в 99% случаев показатель рукожопости программиста >>Visual C++ компилятор настолько специфичен (+ разширения именно от Micrsoft) Ага - расширения еще ладно, а вот кастрация стандарта - это соверщенно непростительно

И вообще, господа - изучайте Жабу - отдичный язык для домохозяек. Как тут было отмечено, С++ потерял популярность - и слава богу, хоть ламеры на нем теперь не пишит

dmshadow
()

Ну первое, справочник по функциям, справочник по стандартам и справочник вообще - всё-таки разные вещи.

К примеру я что-то делаю в САДе. Я что буду, лазить всё время в справочник, что с такой-то кнопочкой делать?? Я талмуд имени джорджа Омуры открываю лишь тогда, когда хочу получить что-то нестандартное. Если язык таков, что человек, из-за элементарных вопросов вынужден всё время сверяться со справочником то нафиг он нужен?? А со стандартом сверять по-любому надо - когда я ХТМЛ пишу, то у меня всегда окошко со спецификацией "ХТМЛ 4.0" висит. и висит не потому что я чего-то не знаю, а потому что хочу чтобы в любом браузере работало.

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

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

Tangeizer
() автор топика

сори за форматирование...
2anonymous (*) (2003-04-11 22:58:02.284) 
> вообще-то это цЫтата из MSDN. 
не делайте себе идолов а приведенный пример демонстрирует (имхо) непортируемость кода (то за что M$ и ругают) 

2lg >null pointer и pointer to null pointer - это разные вещи 
абсолютно 
int *p = NULL; 
int **pp = &p; 
но при чем здесь С++? 

2Antichrist (*) (2003-04-12 03:58:15.858) 
>>Буча то вычеркни из списочка. Дурак он. Не надо его читать... 
ну не понимаю - пАчему??? стиль изложения у него такой как-будто он разговаривает с больным ребенком... лана... это фигня. А по сути? тогда uml это бред сивой кобылы?

laban
()
Ответ на: комментарий от Tangeizer

> Как мне кажется, хаскель имеет неплохие перспективы сместить С++ и отправить его туда, где ему и место...

Хаскель-то? Медленноват... Вот OCaml - да :))

kswapd
()
Ответ на: комментарий от kswapd

если я не ошибаюсь, то кое-кто тут не так давно бил себя пяткой в грудь, обещая кое-что грандиозное на OCaml сваять(не помню что именно). Ждёмс-с :):)

Tangeizer
() автор топика

mldonkey есть например, как раз на окамле... хотя кто тебя знает какие у тебя мерки грандиозности

anonymous
()

УЧИ АССЕМБЛЕР
скоро надо будет тараканов программировать
а на их мелкобитный мозг даже Це не налезет
учить всем асм )))
АСМ живее всех живых .........

Aleks_IZA
()

2 Aleks IZA.
Ты забыл указать самое главное -- какой именно ассемблер. Он, знаешь ли, у каждого камня свой. Асм i386+ учить не надо -- не всунешь ты i386 в таракана. А вот Microchip'овский PIC 12-й серии -- вполне реально. Даже 16-й влезет (в большого кубинского таракана). Кварц с литиевой батарейкой можно на спине закрепить. Одно неизвестно -- какова у таракановых ног нагрузочная способность -- хватит ли у него мощи, чтобы батарейку потянуть. Впрочем, если не хватит, можно ее на отдельную тележку вынести -- катать все-же легче, чем не спине таскать.

nobody ★★
()
Ответ на: комментарий от Aleks_IZA

forth - рулез форева. Тараканов, чертей и розовых слонов на нем программировать - одно удовольствие.

anonymous
()
Ответ на: комментарий от Aleks_IZA

Вот уж какое говно даром не нужно, так это ассемблер. Сегодня кошерный подход - DSL-и под ембеднутые платформы писать. Кроме того, я уверен, что x86 как платформа для цифровой пыли не приживётся, так что знание этого ублюдочного ассемблера никому даром не нужно будет. Ну а один из примеров такого DSL-я тут уже привели - Форт.

Antichrist
()

>но при чем здесь С++?

при том что какой бы сишник на строчку int *p = 0; написал бы комментарий /* pointer to null-pointer */ ? а сиплюсист - спокойно и без напрягов - да и еще показывает типа как это надо правильно делать

lg ★★
()

еханый бабай! странная у вас тут дискуссия - крика много аргументов нет...
pointer to null-pointer
шо такое null-pointer??? что это за тип "null-pointer"??
int *p;
это указатель на инт
int *p = (void*)0; // aka NULL
это указатель на int инициализированный значением ноль
ноль это не абстракция - это конкретный *адрес* в хипе

---
бармалей

anonymous
()

>еханый бабай! странная у вас тут дискуссия - крика много >аргументов нет... >pointer to null-pointer >шо такое null-pointer??? что это за тип "null-pointer"?? >int *p; >это указатель на инт >int *p = (void*)0; // aka NULL >это указатель на int инициализированный значением ноль >ноль это не абстракция - это конкретный *адрес* в хипе

ты я попытюсь предположить сиплюсист null-pointer это такое специальное значение поинтера которое не указывает ни на какую область памяти(своеобразная ловушка) .. int *p = (void*)0; не будет указывать на нулевой адрес в хипе потому что (void*)0 будет преобразовано компилятором в значение null-pointerа(в третий раз повторил) и значение null-pointerа не обязательно 0(разные архитектуры) поэтому когда ты напишешь int *p = (void*)0, a = *p; ты попадешь в так называемый null-trap а не получишь в a значения хипа начиная с нулевого адреса

lg ★★
()

Уважаемые, не забывайте пожалуйста про знаки препинания и другие средства форматирования текста, а то очень трудно понять, кто чего имеет в виду.

Tangeizer
() автор топика

>>ты я попытюсь предположить сиплюсист
сочувствующий

>>*p = (void*)0; не будет указывать на нулевой адрес в хипе
ну физический адресс (величина) это дело десятое - мы ж не на ассемблере пишем

>>int *p =(void*)0;
>>a = *p;
>>ты попадешь в так называемый null-trap
>>а не получишь в a значения хипа
>>начиная с нулевого адреса
да слетим по SIGSEGV мы с таким присваеванием... опреатор разыминовывания не разрулит того, чего нет...
угу... понял, null-pointer это абстрактное *значение* указателя, при котором указатель не указывает ни куда. при этом величина этого значения может и не быть нулем (а чем?) Ради Бога...
теперь так
int *p1 = NULL; // (void*)0
int *p2 = 0x0; // ?? imho дурацкий синтаксис
но почему ты говоришь С++ это зло? Лично я всегда использую объявления в стиле р1...
комментарий типа "pointer to null-pointer" равносилен комментарию
int a = 5; /*integer variable "a" equals to five*/

и вообще, абстракция нуля (null-pointer'а в твоей нотации) необходима для выяснения аллокированности памяти куда этот указатель указывает - детали реализации не важны.

anonymous
()

то что NULL - это поинтер видно из #define NULL (void*)0 то что он(этот поинтер) равен null-pointerу будет обеспечено во время компиляции ..

допустим под NULL имеется ввиду "pointer eqaul to null-pointer" тогда коментарий "pointer to pointer equal to null-pointer" означает(как я понял [если я не так понял то зачем вообще этот коментарий? коментарий нужен для того чтобы облегчить понимание а не усложнить его, если ты не знаешь что ты написал то лучше к этому не писать коментарий]) что мы имеем указатель который указывает на указатель который никуда не указывает - достаточно убарть "pointer to" и коментарий станет валидным - int *p = 0; /* NULL */

посмотрим с другой стороны(если кто-то хочет сказать что под NULL имеется ввиду не "pointer equal to null-pointer"): "pointer to NULL" - указатель на некую субстанцию NULL - но int *p = 0; никуда не указывает потому-что он равен null-pointerу - поэтому в любом пример с таким коментарием достойно занимает место в MSDN.

возможно опять кто-то скажет что английское "to" употребляется здесь для того чтобы указать чему будет равно значение .. например p -> 0, p to 0 опять же встает вопрос о дуальности коментрария и поэтому и о его кривости .. если человек хотел имеено так написать надо было что-то типа "set p pointer to be eqaul to NULL"

поэтому я и говорю что C++ зло - все это от него

> значения может и не быть нулем (а чем?)

да я так и не вспомню на вскидку - на интеле 0 - на мотороле может 0x3f - хз - да это и не важно - важно то что он может быть различным - я думаю это важно только для разработчиков компилятора ..

lg ★★
()

чевой-то я запутался...
1. NULL - это не тип, это величина
2. NULL - это define (void*)0
3. кастинг типа величины "нуль" к типу "void*" производится, чтобы устранить неопределенность операторов присвоения (чтобы размеры типов были одинаковыми - размер указателя (кажется) 4 байта)
3.1. не будет проблемой определение #define NULL (my_any_type*)0 -> это *не* повлияет на величину (нуль останется нулем) :)
4. объвяление int *p; указывает компилятору создать в секции .data "живой" символ "p" размером 4 байта - причем содержание этих байт будет случайным (величина указателя будет случайной)
5. объявление int *p = NULL; тоже самое что в 4. за исключением, что компилятор A)приведет тип (void*) к типу (int*) ; Б)(оператор присваивания)изменит содержание выделенных байт на ноль.
Таким образом я могу сказать что "символ р" имеет тип "указатель на целое" и величину равную "нулю".
В момент загрузки (run-time) ОС возьмет на себя обязательства по физическому менеджменту блоков данных и операциями с хипом (считаем, что о физике процесса можем забыть)

6. подобное поведение идентично для С и С++ - концепция указателя в С и С++ одинаковая.
7. нет смысла доказывать "злостность" С++ на базе указателей на ноль и прочей ... :)

по-твоему это неверное рассуждение?

anonymous
()

2anonymous (*) (2003-04-14 16:53:51.946)

может и верно, только там что-то про размеры не то написано -- в стандарте гарантии sizeof( int * ) == sizeof( void * ) нет..

dilmah ★★★★★
()

Похоже подобный тупой треп мог быть только на юниксовых сайтах, попробовал бы найти подобную херь где нибудь на VCprogramer - так нет же, ну ладно гоните дальше.

cushe
()

>чевой-то я запутался...
>1. NULL - это не тип, это величина

NULL - это и не величена - это такой специальный набор символов который будет преобразован в величину/значение(достаточно неизвестное) во время компиляции - значение null-pointerа

>2. NULL - это define (void*)0

да

>3. кастинг типа величины "нуль" к типу "void*"
> производится, чтобы устранить неопределенность
> операторов присвоения (чтобы размеры типов были
> одинаковыми - размер указателя (кажется) 4 байта)

(void *) нужен для того чтобы 0 был в поинтеровском контексте

> 3.1. не будет проблемой определение #define NULL
> (my_any_type*)0 -> это *не* повлияет на величину (нуль
> останется нулем) :)

вообще на самом деле я тут во всем уверен - возможно что есть архитектура в которой несколько ловушек и компилятор зная об этом в зависимости от употребляемого типа привидения будет использовать разные ловушки - но по сути можно считать что null-pointer только один

> 4. объвяление int *p; указывает компилятору создать в
> секции .data "живой" символ "p" размером 4 байта -
> причем содержание этих байт будет случайным (величина
> указателя будет случайной)

ага - не обязательно конечно 4 байта ну да ладно

> 5. объявление int *p = NULL; тоже самое что в 4. за
> исключением, что компилятор A)приведет тип (void*) к
> типу (int*) ; Б)(оператор присваивания)изменит
> содержание выделенных байт на ноль.

нет. int *p = NULL; тоже самое что и 4 только оператор присвоения изменит содержание выделенных байт на значение null-pointerа т/к перед выполнением присвоения NULL будет преобразован в null-pointer(не помню в какой раз повторил)

> Таким образом я могу сказать что "символ р" имеет тип
> "указатель на целое" и величину равную "нулю".

... и велечину равную null-pointerу - я так понял что ты специально сказал "нуль" а не "ноль" подразумевая как раз null-pointer

> В момент загрузки (run-time) ОС возьмет на себя
> обязательства по физическому менеджменту блоков данных
> и операциями с хипом (считаем, что о физике процесса
> можем забыть)

null-trap это хардверная ловушка даже для user-space процессов

> 6. подобное поведение идентично для С и С++ - концепция указателя в С и С++ одинаковая.

вроде да

> 7. нет смысла доказывать "злостность" С++ на базе указателей на ноль и прочей ... :)

злостность C++ не в операциях с указателями вовсе - а в том что C++ искажает реальность

> по-твоему это неверное рассуждение?

хз

lg ★★
()

ок
спасибо за оппонирование

>>злостность C++ не в операциях с указателями вовсе -
>>а в том что C++ искажает реальность

ну вот это уже сильное утверждение! :)
тут можно под пивко и сигаретку на кухне не один час протрепаться - а в форуме предлагаю забить!

2cushe (*) (2003-04-14 17:42:57.241)
угу... висюки с увлечением обсуждают свою главную висючку (виндузу) - и им обсуждать там переобсуждать (все равно толком никто не знает как она работает (кода-то нет))
наблюдение за висюками - раздражение и агрессивность в форумах... грубость как форма самозащиты слабого понятия (не продуманного, но принятого на веру), и раздражение как результат постояныых неудач? Не расстраивайся - все у тебя получится ... с возрастом =)

anonymous
()

[~]$cat 1.cpp 
int *p = (void*) 0;
[~]$g++ 1.cpp 
1.cpp:1: invalid conversion from `void*' to `int*'
[~]$

Кто здесь говорил, что в Си++
#define NULL (void*) 0
???

anonymous
()

[~]$cat 1.cpp 
#include <stdio.h>
int *p = NULL;
[~]$g++ -E 1.cpp 
[... пропущено...]
# 2 "1.cpp" 2
int *p = __null;
[~]$

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.