Portál AbcLinuxu, 30. dubna 2025 11:20
void sum(int x, int y, int& z) { z = x + y; }This is a real example taken from an introductory programming book (!), the code is meant to illustrate passing arguments by reference. In practice one would certainly pass the sum back using the function return value. Passing arguments by reference would be better illustrated by something like this:
bool read_data(int& data) { if (everything_goes_fine()) { data = …; return true; } else return false; }This is also a bit contrived: Would you call a function
read_data
? Would you signal success by returning true
? Shouldn’t this better be solved by using a pointer? I am not a C++ programmer and made this sample up on the spot without context, so that I cannot answer these questions right now. But it would certainly be better if the autor could illustrate passing by reference using some example that can’t be solved simply using the function return value. Do not cheat the readers, do not pretend that a problem is harder than it really is.
Another example of what not to do, again from a real programming book:
#include <iostream> using namespace std; int main(void) { int x = 0; while (x++ < 5) { int y = 0; while (y++ < 5) cout << "X"; cout << "\n"; } return 0; }This is a
while
loop misused as a for
loop. Of course you can reason that the author simply wishes to illustrate a point, like passing arguments or comparing two cycles. I think that contrived, unreal examples are bad in programming books, especially if not explicitly marked as such.
Just as a beginning speaker of a natural language often cannot detect irony, beginning programmer cannot tell “real code” from the “sample code”. Autors sometimes remark that the code sample is only meant as an example and would be written otherwise in practice. This is almost always just an excuse. Of course, writing production-grade code is not always possible in the book, but does it really make sense to write a book full of code that nobody would write in practice?
Tiskni
Sdílej:
olsó í glaub ned, dasse Sinn mocht, hier Beitróg ina Frendspróch zu póste.
Das war Schwäbisch.
Ich auch šprice dojč! :)
je mozne (podle toho šprice) , ze jste se ucil nemcinu od nejakeho polaka?
Nebo od někoho z východní části naší republiky. Jak jsem četl "šprice", znělo mi to jako "piče"...
heh, pri cteni nahlas mi to zni dost jako svycarska nemcina:)
ten dojem je spravny, co vim, tak obyvatele jizniho badenska-wuerttemberska jsou jedini Nemci, kteri svycarum rozumi, neb obe jazykove skupiny hovori stejne hroznou hatmatilkou ...
A co Tirolaci? Podle me mluvi taky dost podobne.
co? a pro oba je to rodna rec? clovek kterej mluvi nemecky nerozumi jinymu cloveku kterej mluvi taky nemecky?! kam jsme se to dostali ...
nerekl bych ze si american s britem/australanem/indem/JARanem nepokecaj ...
slo mi o to jestli ty jazyky jsou od sebe opravdu tak daleko ze si nerozumi ...
v nemecke televizi jsem videl svycarske zpravy, jsou povetsinou z titulky, jinak tomu skutecne vetsina Nemcu nerozumi, znam jednoho Svycara z Basileje a je to tak, ze se musi skutecne silne koncentrovat, kdyz chce mluvit spisovnou nemcinou. Nekteri starsi svycari to pry ale nedokazou vubec. Jina vec je, ze samozrejme nemecky svycar rozumi spisovne nemcine.
英語を読むことができない
presne taky muj nazor.
Je to copy-paste z translatora, takze to moze byt zle.
Malo by to byt spravne:
eigo o yomu koto ga dekinai - nemozem citat Anglictinu
Co tam je gramaticky zle?
Niektore znaky sa prepisuju roznymi sposobmi. Doslovny preklad tej vety je: Nemozem robit citanie Anglictiny.
Tych prekladov je viac:
eigo wo/o yomenai
eigo wo/o yomemasen
slusne
+1
Zdá se to jenom mně, že v příkladech chybí dereference pointeru? Tedy *z = x + y, případně *data ... .
#include <iostream> using namespace std; void change(int& what) { what = 42; } int main() { int foo = 0; change(foo); cout << foo << endl; // 42 return 0; }Jinak díky za první příspěvek v tématu
Například SICP hloupými příklady netrpí ani v nejmenšímSICP jsem četl a je to úžasná knížka. Klíčový je ovšem použitý jazyk: v C++ by podobné příklady měly několikanásobnou délku, a to bych nechtěl vidět pátou kapitolu. Když jsme ovšem u toho: můžete doporučit nějakou opravdu kvalitní učebnici C++? Český jazyk vítán
Vyborna knizka je www.amazon.com/Modern-Design-Programming-Patterns-Depth/dp/0201704315, jeji ceskej preklad je bohuzel dost tragickej. Vsechny odborny terminy jsou - nekdy i dost nasilne - prelozeny do cestiny, ale na druhou stranu maji vety casto anglicky slovosled.
Českej překlad nasazuje všemu korunu. Origianál je lepší. I když je potřeba používat slovník člověk se alespoň naučí klíčová slova pro google.
int read_data(int& data, int velikost_dat) { int readed = 0; for(; readed < velikost_dat ; readed++) if ( chyba ) return -2; else ... return readed; }
a máme příklad který se používá a je se smysluplnou návratovou hodnotou (o triku int vs char a EOF bych zatim treba pomlcel). Takže proč vymýšlejí autoři ptákárny a nedávají příklady ze STL?
Je potřeba z Angličtiny odstranit některé zastaralé výrazy. Mladý brit pohledá v Googlu a bude si myslet že je to správně. Pak bude angličtina jednoduší pro celý svět.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.