Hvad mener I om c++?
http://www.linuxin.dk/node/19398
Heri bliver Linus' C++ had nævnt
paldepind har også et sjovt citat:
http://www.linuxin.dk/node/19407#comment-70789
I think maybe the guy who invented C++ doesn't know the difference between increment and excrement. -- smcameron
foruden at han har den frækhed at sige, 'nok fordi at det er elendigt designet sprog' :)
(sagt drillende - selvom jeg gerne vil have du forsvarer det :) )
Det er flere andre bemærkelsesværdige negative citater:
There are only two things wrong with C++: The initial concept and the implementation. — Bertrand Meyer
(Nu har implementationen jo ændret sig en del fra at være source to source til source -> binary - men jeg tror citatet mere er lavet for at sige 'alt er galt med c++')
Actually I made up the term ‘object-oriented’, and I can tell you I did not have C++ in mind. — Alan Kay
C++ is an insult to the human brain -- Niklaus Wirth
Linus' holdning står i øvrigt her:
http://advice.cio.com/esther_schindler/linus_torvalds_why_c_sucks
Tilgengæld hedder artikel why C++ suck - og jeg står med fornemmelsen af at Linus (ligesom andre) sandelig kan bashe, men rent faktisk bruger skældud som 'argumenter' mod c++ ...
Hvorfor er C++ dårligt designet/forkert? Det er jo i sin enkelthed let nok bare at hælde noget pop-smart øregas ud - men som c++ expert vil jeg da gerne høre hvad folk konkret har mod sproget...
Man kan sige, at man ikke bryder sig om syntaxen (hvilket også er fair nok - men så brude man nok heller ikke bryde sig om C ...)
Måske kan man også bedre lide andre sprog ... helt ok, men beretter dette C++ bashing?
Jeg har gjort min egen holdning klart her:
http://www.linuxin.dk/node/19398#comment-70726
Hvor jeg henviser til
http://warp.povusers.org/OpenLetters/ResponseToTorvalds.html
og måske også burde også have haft henvist til
http://www.johndcook.com/blog/2009/09/15/linus-torvalds-cpp/
(og den efterfølgende debat)
Slutteligt vil jeg nævne at c++11 (c++0a el c++0x netop lige er blevet færdigt i den pågældende ISO-komite). Derudover ligger spoget i toppen af de mest brugte sprog (og intet tyder på at det vil ændre sig ...)
http://langpop.com/
Så c++ er altså ikke forældet eller noget ...
De småting, som jeg selv kan indvende mod c++ er
* at sproget ikke har noget garbage-collector (det er ikke ubetinget en ulempe - men måske skulle der være et optionelt tilvalg ...)
* Der findes ikke nogen uendelige ints i c++
* (Nogle tekniske småting, som jeg ikke engang vil prøve at formulere :) )
Personligt ser jeg ikke nogle større problemer i c++ - og jeg kunne godt tænke mig, at høre hvad folk herinde mener, at der er galt med c++ ....
Det er lidt vanskelig at forholde sig til ukonkret c++ bashing ....
Jeg ser frem til en spændende (forhåbentlig) spændende og saglig debat.
Hvis jeg bliver mødt med stilhed må jeg forvente, at folk faktisk ikke har noget sagligt at indvende mod c++.
- Log in to post comments
Kommentarer10
Hmm, måske har vi ikke brug
Hmm, måske har vi ikke brug for flere "hvad er der galt med" artikler lige med det samme? :-)
Bare min 25 øre.
ok, opdaterede overskriften,
#1
ok, opdaterede overskriften, så den ikke er så konfronterende ...
Personligt har jeg et par
Personligt har jeg et par gange leget lidt med C++ og gået i gang med at implementere nogle ting deri men som tiden er gået er jeg faldet tilbage til C (foruden nogle andre sprog, men kun C er relevant for diskussionen).
Kald mig stupid, men det forekommer mig der er en række rimeligt giftige huskeregler omkring alt fra copy constructors mv. (Jeg kan ikke argumentere godt for den opfattelse længere da det er mindst et år siden jeg sidst læste C++).
Der er nok mening med galskaben, men til de fleste ting foretrækker jeg andre sprog og hvis det SKAL være low-level - så er der en rimelig skønhed ved C. Selve sproget har forholdsvist få konstruktioner og er, trods nogle irritationsmomenter (så som operator precedence helvedet) forholdsvist overskueligt.
Problemet med C++ er nok at det arvede problemerne fra C og (måske derfor) endte med at dynge egne problemer og huskeregler ovenpå. Resultatet er et sprog hvor der er ret mange måder at skyde sig selv i foden på :)
Men hey, hvad end der gør folk glade.
#3Du har faktisk en god
#3
Du har faktisk en god pointe (selvom jeg nu ikke lige mindes et problem med copy ctor) C++ har dog en kuriositet i forbindelse med constructorer ...
class SomeClass {
...
};
SomeClass c(some_var); // her bliver ctor oplagt kaldt
SomeClass c; // Her bliver en default ctor selvfølgelig kaldt
n = some_var; // Der bliver ikke kaldt nogen ctor
SomeClass c = some_var; // Her bliver en mulig ctor der tager some_var kaldt - hvad der ikke er oplagt (Conversion operators kan også komme i sving med forskellig precedence - og den mere oplagte operator = kan aldrig komme på tale ...)
Men godt-taget - hvis jeg får 10 af den slags tilsvarende problemer er jeg måske :) tilbøjelig til at erkende at c++ har et problem :)
Er det i øvrigt anderledes i Java?
(PS: Der er faktisk også noget konversion, hvor man måske ønskede at keyword explicit var implicit - altså default - mens implicit var det keyword, der burde være - og der automatisk tillod den slags type-konverteringer .... Måske burde jeg tælle dette som punkt nr.2 ...)
Først vil jeg gerne
Først vil jeg gerne indrømme, at min holdning om C++ i meget ringe grad bygger på egne erfaringer.
#0: foruden at han har den frækhed at sige, 'nok fordi at det er elendigt designet sprog' :)
(sagt drillende - selvom jeg gerne vil have du forsvarer det :) )Det er mit indtryk at Bjarne Stroustrup ukritisk tilføjede alle features han kunne finde til C++, for at tilfredsstille alle.
Operator overloading? Det skal med!
Multiple inheritance? Det skal med!
Osv.
Resultatet er et enormt og dårligt designet sprog, med alt for mange faldgrupper. Desuden er det vigtig at have in mente, at C++ ikke blev populært, fordi at det har nogle udsøgte kvaliteter, andet end at det var let og omkostningsfrit at migrere til fra C.
Jeg vil sige at C++ har sin
Jeg vil sige at C++ har sin plads, ligesom C og c#/java har det.
Steder som jeg regner med at sprogene har det bedst:
C: til low level/hardware programing.
C++: OS/kernel, modelring og andre steder hvor det skal gå stærkt men hvor man ikke har tid til at skrive det binært
c#/java: resten af verden
Det er pænt
#6 enig
Det er pænt
#6 enig
#5
Resultatet er et enormt
#5
Resultatet er et enormt og dårligt designet sprog ...
Jeg kan forstå din holdning men jeg deler den ikke :)
>Operator overloading?
Ja, Selvfølgelig skal den med .... :)
Multiple inheritance?
Ja, Selvfølgelig skal den med .... :)
I sidstnævnte findes der i den virkelige verden faktisk ting, som kan være flere ting... og derudover så skal folk især med overloading bare passe på. Jeg har givet lidt mht typekonvertering kan ske for automatisk ...
fordi at det har nogle udsøgte kvaliteter, andet end at det var let og omkostningsfrit at migrere til fra C.
Min egen tro er faktisk at C oftere bruges til lidt mere low-level ting (f.eks. embedded) hvor man ikke kan anvende c++ - eller også har man ikke fundet nogen pointe i at tilføje c++ som lag når hele ens kode-base i forvejen var C. Du kan ikke komme med mange eksempler på kode, der er lovlig C og ikke lovlig c++ kode ...
#6
Jeg takker for svar :)
Jeg synes jo bestemt også at der er plads til java. Det har rigtig mange fordele.. Crossplatform på 100 måder + kan afvikles i browser. Pga mine egne kompetencer ville jeg normalt vælge c++ til store stationære programmer - også fordi man aldrig med sikkerhed ved om noget pludselig kræver ekstra performance ... (og her kan det være lettere at optimere c++)
Jeg er bestemt ikke helt uenig i dit billede af situationen....
(Nu nævner jeg så ikke c# - måske fordi jeg deler i hvert fald noget af Bjarnes holdning:
http://www2.research.att.com/~bs/bs_faq.html#Csharp
)
#7
Tak for svar - og se evt ovenfor :)
Min egen tro er faktisk
#8: Min egen tro er faktisk at C oftere bruges til lidt mere low-level ting (f.eks. embedded) hvor man ikke kan anvende c++ - eller også har man ikke fundet nogen pointe i at tilføje c++ som lag når hele ens kode-base i forvejen var C. Du kan ikke komme med mange eksempler på kode, der er lovlig C og ikke lovlig c++ kode ...Jeg forstår ikke helt hvad du mener. Ja, lovlig C kode er også gyldig C++ kode. Det er jo netop derfor at migræringen er så let.
C blev oprindeligt lavet som et system sprog. Men da Unix blev enormt populært, og Unix var skrevet i C, blev C enormt populært. Derfor begyndte folk at skrive alle mulige programmer i C, et formål det ellers ikke var ment til. Altså bruger rigtig mange C. For en virksomhed der bruger C er det nu meget billigt at skifte til C++, end hvis man skulle have skiftet til f.eks. Smalltalk. Den eksisterende kodebase kan genbruges, og medarbejderne kan lære det nye sprog lidt hen ad vejen. Jeg tror at dette er den største årsag til C++ success.
ok
#9
Jeg misforstod dig fuldstændig.