BG Development


Страници: (24) « първа ... 10 11 [12] 13 14 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> хахахах, вчера забелязах нещо яко!
Gamma Goblin
Публикувано на: 12-07-2018, 21:04
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1138
Регистриран на: 21.02.18



QUOTE (Дон Реба @ 12-07-2018, 20:21)
QUOTE (DarkOne @ 12-07-2018, 16:39)
Това означава по 3 за всяко извикване на функция, която може да не успее, в целия код.

криви сметки, всяка функция може да не успее, ифове има само на тия дето ако не успеят става лошо

То в такъв случай е по-добре да си оптимизираш програмата и да ги изтриеш тия функции, след като е все тая какво (не) са направили - хем по-малко код за поддръжка, хем по-бързо изпълнение и по-малко необходими ресурси.

Това мнение е било редактирано от Gamma Goblin на 12-07-2018, 21:04


--------------------
Напред! Живота е сраженье! Напред! И прав всегда ходи!
Напред, макар към поражение! Ако ще паднеш, прав падни!
---
Raw, and untamed in spirit, We chew this world and Spit it out
---
Challenge my own world to chaos
---
Im not intimidated by the good looking ones, it's the ugly ones that scare the shit out of me
PMEmail PosterUsers Website
Top
gat3way
Публикувано на: 12-07-2018, 21:29
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2874
Регистриран на: 22.06.12



Глупости, примерно проверяваш ли изхода от неща като sleep, gettime, printf и прочее освен ако лайнарщини като coverity не те накарат, но дори тогава се прибягва до тъпотии като (void)printf... колкото да млъкнат
PMEmail Poster
Top
dvader
Публикувано на: 12-07-2018, 22:26
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4103
Регистриран на: 12.07.05



То щом имаш sleep значи вече си за бой icon_smile.gif
Ако gettime фейлне какво ще получиш като време и какво ще го правиш?
Ако printf пише нещо важно, разбира се, че ще проверяваш. Например ако пишеш във файл, как ще разбереш, че мястото на диска е свършило?
Друг е въпроса, че всичките тези случаи са крайно редки - още един аргумент в полза на изключенията...


--------------------
I find your lack of faith disturbing
PM
Top
AK-85
Публикувано на: 13-07-2018, 01:44
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 763
Регистриран на: 06.07.06



QUOTE (Дон Реба @ 12-07-2018, 04:19)
всъщност като се замислих, може би не е само легаси кода, подозирам че чисто С апитатата имат също пръст в тая работа.

Точно, в C (дори C11) типът на стринговите литерали е char []. Обаче писането в стрингов литерал е недефинирано поведение, което дефакто го прави const.

QUOTE (Gamma Goblin @ 12-07-2018, 07:58)
Перфектния език ще е на ниско ниво като Ц, но ще има правилно ООП и хубави exceptions като джава и функционални елементи...

Това е безсмислено изречение - горе-долу като да искаш вода, която не мокри.

QUOTE (DarkOne @ 12-07-2018, 12:25)
CODE
                 err = ksys_ioctl(fd, SET_ARRAY_INFO, (long)&ainfo);
                 for (i = 0; !err && i <= MD_SB_DISKS; i++) {
                       dev = devices[i];
                       if (!dev)
                             break;
                       dinfo.number = i;
                       dinfo.raid_disk = i;
                       dinfo.state = (1<<MD_DISK_ACTIVE)|(1<<MD_DISK_SYNC);
                       dinfo.major = MAJOR(dev);
                       dinfo.minor = MINOR(dev);
                       err = ksys_ioctl(fd, ADD_NEW_DISK,
                                    (long)&dinfo);
                 }
Ако ksys_ioctl върне грешка... ignore.... дори няма принтене на warning като на повечето места icon_lol.gif

Е, как ще се игнорира, като цикълът се контролира от стойността на err?! Иначе ioctl() е системно извикване, затова няма печатане на warning - err се връща на userspace-а и той вече да се оправя (това, между другото, се дава като пример за един от основните елементи на Unix философията). Като сме заговорили за ядрото, една "грешка" при системните извиквания, която се среща почти постоянно, особено при работа с неблокиращи сокети, е EAGAIN. И това ли предлагате да се прави с изключения?

QUOTE (gat3way @ 12-07-2018, 15:03)
Никой не ползва setjmp/longjmp у чистото C...

Напротив, даже има пример за известна библиотека, която прави точно това - libpng. Чети и плачи... Аз като го видях за пръв път, първата ми мисъл беше, че е измислено от някой религиозен фанатик.
PM
Top
johnfound
Публикувано на: 13-07-2018, 05:54
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 6467
Регистриран на: 27.05.04



Гледам пак дъвчете реално заблуждение, затова да повторя:

Далеч не всяка функция може да фейлне. Това на Ц може да не е очевидно, но пишейки на асемблер, такива неща се виждат с просто око.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
johnfound
Публикувано на: 13-07-2018, 06:08
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 6467
Регистриран на: 27.05.04



Вие пропускате и нещо друго – когато се ловят изключенията се появява един страничен ефект, който обаче е много гнусен – програмата започва да гърми не там където е проблема, а на съвършено други места и в съвършено друго време. В резултат от което ловенето на бъгове става значително по-трудно, а понякога и съвършено невъзможно.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
Дон Реба
Публикувано на: 13-07-2018, 06:09
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 6918
Регистриран на: 11.11.06



QUOTE (gat3way @ 12-07-2018, 21:29)
Глупости, примерно проверяваш ли изхода от неща като sleep, gettime, printf и прочее освен ако лайнарщини като coverity не те накарат, но дори тогава се прибягва до тъпотии като (void)printf... колкото да млъкнат

ако си достатъчно луд, що не.
наскоро си дръпнах сдк на никон, и там имаше примерно програмче. е няма такова малоумие, на чисто С е примера, но първото което се набива на очи, за тия хора инстанциране няма, всичко е на малок и фрее. и ти да видиш какви чудеса от храброст, абе нещо дето може да стане на два реда отива два екрана. та, тия японци проверяват резултата от всяка функция
PM
Top
Дон Реба
Публикувано на: 13-07-2018, 06:21
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 6918
Регистриран на: 11.11.06



QUOTE (johnfound @ 13-07-2018, 05:54)
Гледам пак дъвчете реално заблуждение, затова да повторя:

Далеч не всяка функция може да фейлне. Това на Ц може да не е очевидно, но пишейки на асемблер, такива неща се виждат с просто око.

ама че си джавар, за два дена три пъти показа силно програмистко (в лошия смисъл) мислене.
много лесно се разпознава код писан от офисен плъх и от истински инженер, какъвто претендираш че си. например офисния мишок пише
if(++count==limit)OnLimitHit(...);
същото нащо майстора инженер го пише
if(++count>=limit)OnLimitHit(...);
каква е разликата? офисния мишок вярва че няма как count да стане от 2 на 4 без да мине през 3, вяра която и ти изглежда споделяш




PM
Top
Дон Реба
Публикувано на: 13-07-2018, 06:24
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 6918
Регистриран на: 11.11.06



QUOTE (Gamma Goblin @ 12-07-2018, 21:04)
QUOTE (Дон Реба @ 12-07-2018, 20:21)
QUOTE (DarkOne @ 12-07-2018, 16:39)
Това означава по 3 за всяко извикване на функция, която може да не успее, в целия код.

криви сметки, всяка функция може да не успее, ифове има само на тия дето ако не успеят става лошо

То в такъв случай е по-добре да си оптимизираш програмата и да ги изтриеш тия функции, след като е все тая какво (не) са направили - хем по-малко код за поддръжка, хем по-бързо изпълнение и по-малко необходими ресурси.

ако тръгнем по тая пътека, можем да изтрием всичкия софтуер, защото е все едно какво прави, хората са си живеели чудесно и преди да има софтуер, даже разни начумерени дядки настояват че е било по-чудесно - бирата била по-бира, нямало джендъри, жените готвели и чистели, а тоалетните за негри и бели били отделни.
PM
Top
johnfound
Публикувано на: 13-07-2018, 06:55
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 6467
Регистриран на: 27.05.04



QUOTE (Дон Реба @ 13-07-2018, 07:21)
ама че си джавар, за два дена три пъти показа силно програмистко (в лошия смисъл) мислене.
много лесно се разпознава код писан от офисен плъх и от истински инженер, какъвто претендираш че си. например офисния мишок пише
if(++count==limit)OnLimitHit(...);
същото нащо майстора инженер го пише
if(++count>=limit)OnLimitHit(...);
каква е разликата? офисния мишок вярва че няма как count да стане от 2 на 4 без да мине през 3, вяра  която и ти изглежда споделяш

Аз въобще пиша:
CODE
dec  ecx
js  .limit_hit


icon_razz.gif


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (24) « първа ... 10 11 [12] 13 14 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0