ասք տարբեր բաների մասին

C++ is a horrible language. It’s made more horrible by the fact that a lot
of substandard programmers use it, to the point where it’s much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.

այստեղից

ու հա, ՆՅ-ում ավելի լավ զբաղմունք չեմ գտնում քան բլոգեր կարդալ:

ֆոտոներ մի սպասեք, նենց ա որ ոգեւորված չեմ

ինչքան տարբեր տեղերում լինում եմ այնքան համոզվում եմ, որ իմ համար ավելի լավ տեղ չկա քան Երեւանը:

ու տենց

ասք դոթնեթի անցնելու մասին

Մի ընկերություն կար, որը դեռ ութանասունականներից գրված լիքը սի/սիպլյս գրված լիքը սերվերային կոդ ուներ։ Ու կորպորածիվ նորաձևության ժամանակակից քահմհարումներից ելնելով որոշում է լրից դոթնեթով արտագրել։

Արտագրում արտագրում են, լիքը ռեսուրս են ծախսում։

Ու թողնում

Տեստերը ցույց տվեցին որ արագագործությունը անթույլատրելի նվազել է։

Ու ոչ մի ջասթ ին թայմ քոմփայլեր չի օգնել։

փաստորեն։

ու տենց

ասք ստանդարտներին հետևելու մասին

Ստանդարնտները լավ բան են։ Ինչ որ ստանդարտ պետք ա լինում։ Նույնիսկ ասենք շփման մեջ, միմյանց հասկանալու համար։ Կամ թերմերի մեջ, կրկին՝ հասկանալու համար։

Սակայն, երբ ստեղծում եք նորը ստանդարտին հետևելը, կամ համապատասխանելը հաճախ բերում է վատ որոշումներին, ու վատ դիզայնին։

Ասենք, երբ Ստրաուստրուպը C++ նախագծելուց փորձում էր պահպանել C-ի հետ համատեղելիությունը, դա բերեց ինչպես տգեղ լուծումների, այնպես էլ լեզվի չաղացմանը։

Ուինդոուս/Սոլարիս-ներում – պահպանել նախկին տարբերակների հետ համատեղելիությունը որոշումը բերեց գրադարանների չաղացմանը։

Ի տարբերություն, Վիրտը, նախագծելով Մոդուլան որոշեց չպահպանել պասկալի հետ համատեղելիությունը։ Փոխարենը, նա գրեց քոնվերթեր, պասկալից մոդուլա տրանսլացիա անելու համար։ Նույնպես նա վարվում էր և հետագայում, Մոդուլայից Օբերոն քոնվերթեր գրելով, քանի որ հասկանում էր՝ համատեղելիությունը պահպանելը կբերի տգեղ դիզայնի։

Բաց ԾԱ-ի աշխարհում համատեղելիություն պահպանելը իմաստ չունի։

Փոխվեց գրադարանը՝ փոխվում է ծրագիրը որը այն օգտագործում է։ Եթե ծրագրի հեղինակը հետաքրքրված չէ, դա անում է մեյնթեյները կամ յուրաքանչյուր մեկը ում այդ ծրագիրը պետք է։ Այսպիսով, բաց ԾԱ-ն չունենալով համատեղելիության շերտ՝ ավելի նիհար է։

Ինչպես ես արդեն գրել եմ, կարգինը՝ արտակարգ լինել չի կարող։

Այս պատճառով Պլան9-ը և Ինֆերնոն, որոնց դիզայնի մեջ, ի դեպ, անկերես է Օբերոնի ազդեցությունը, չեին կարող հետևել սովորական Յունիքս/Պոսիքս ստանդարտների։

Ու պարզ է որ նրանք լայն չեն կիրառվում այն պատճառով, որ ծրագրերի մեծ մասը գրված է տեքնոլոգիաներով, որոնք անհամատեղելի են Ինֆերնոի հետ։ Օրինակ, C-ով կոդ այնտեղ ափլիքեյշն լեվել չի օգտագործվում, դրա համար կա Լիմբո։

Սակայն, նոր դիզայն կարող է իրեն թույլ տալ կորմորացիա որը նախագծում է ու տարածում նոր համակարգ։

Ես Անդրոիդ-ի մասին եմ։

Գուգլը լինուքս միջուկի հիման վրա ստեղծել է «նոր» համակարգ, ձեռք է բերել նոր ջավա վիրտուալ մեքենա։

Դրայվերների խնդիր մոբայլ սարքերի համար չկա՝ միևնույն է լիքը նոր դրայվեր գրվել է։

Լինուքսից օգտագործվել է սքեդուլերը, թիսիփի սթեքը, և այլն։ Սի-ով ափլիքեյշն կոդ գրելն նախատեսված չեր։

Այսինքն, կարելի էր անել համակարգ, որտեղ կան դիզայնի նոր ընտրություններ, ինչպես ընդհանուր հասցեական տարածությունը։ Բայց էդպիսի բան արված չէ։ Ընդ որում Լինուքս միջուկի քաստոմիզացիայի վրա այնքան ռեսուրս է ծախսվել, որ այդ ուժերը անհրաժեշտ էր ծախսել Ինֆերնոն փրոդաքշն և մոբայլ սարքեր բերելով։

Որովհետև նոր է, արագագործ, ու գեղեցիկ։

ու տենց

ասք հռոմեական թվերի մասին

object-oriented design is the roman numerals of computing.

այստեղից

Ռոբ Փայքի, որը այժմ Գոու-ի ֆյուրերն ա ամենահայտնի խոսքերից։

Ինձ շատ ուրախացրեց այս փոսթը

> Java is done right in concept.

wtf?

[ Let me start by saying I don’t speak for any of these guys,
I can’t even get their OS to run a GUI.]

Java is better than C++, but as others have mentioned that’s like saying
toothache is better than herpes.

It’s just C without pointer arithmetic. Leaving aside actual
implementation bugs, it :

* runs on less platforms than any other language I’ve ever used,
* wimped out of having numeric types implemented as objects, then
bolted on ‘containers’ for them in 1.1
*has changed its GUI twice and *still* doesn’t do it right,
* it’s thread model is essential to its operation but differs widely
between VMs even on the same platform
* the same it true for its garbage collector.
* The APIs are huge and inconsistent.
* it *finally* – in 1.4 – has a regex API (which is unusably complex).
* it’s native code bindings are absolutely the worst I’ve ever seen,
even Perl does a better job

And don’t forget m5 current personal favourite –
its pointlessly restrictive type system.

Type is stored in the *pointer*, not the object.
So I have to hold the VMs hand each time I pass an argument.
I’m not allowed to reuse a variable to
point to an List and a Vector, even if I’m going to call a method
with the same name on both.

And then to really piss in my chips, 90% of the Collections API
which lets me store these objects and actually *do* something with them
only lets me pull them out as Object.

I HAVE TO CAST THEM. So when I get an object ‘dynamically’ – via RMI or
out of a Vector or whatever, I have to know what it is in advance.
The poor frigging object doesn’t know (no, don’t get me started on the
abomination that is the reflection API, people are already starting to
stare).

And this is a dynamic language. KERR-RIST.

None of this matters of course, because “it’s better than C++”.
And IT managers think the Sun shines out of its ass.

Java is the f*cking COBOL of the 90s and
future generations of geeks are going to fly back from Mars to piss on
our graves for inflicting it on them.

> Unfortunately. I can do system programming and command-line
> apps with Java.

Sure. If you don’t mind a fifteen second delay while the VM drags itself
up from the bottom of the sea each time you run a command line app.

Or should that ‘.’ be a ‘,’ ?

ու տենց

ասք իմ հետ համաձայն լինելու մասին

“Google distinguished engineer Rob Pike ripped the use of Java and C++ during his keynote at OSCON, saying that these ‘industrial programming languages’ are way too complex and not adequately suited for today’s computing environments. ‘I think these languages are too hard to use, too subtle, too intricate. They’re far too verbose and their subtlety, intricacy and verbosity seem to be increasing over time. They’re oversold, and used far too broadly,’ Pike said. ‘How do we have stuff like this [get to be] the standard way of computing that is taught in schools and is used in industry? [This sort of programming] is very bureaucratic. Every step must be justified to the compiler.’ Pike also spoke out against the performance of interpreted languages and dynamic typing.”

այստեղից

լրիվ տեքստը

ինչի՞ ա տենց հայտարարում։ անկապ չեր ասի, երևի ուզում են Գոու-ն տարածել։

“Go is an attempt to combine the safety and performance of statically typed languages with the convenience and fun of dynamically typed interpretative languages,” he said, before adding, “to the extent that it succeeds you’ll have to judge for yourself.”

փաստորեն։

Սա էլ Պայքի 2000 թվի թուղթ ա։ Հետաքրքիր ա։

ու տենց

ասք ձիետային նստացնելու մասին

փաստորեն, թիմը թույլատրեց c++ կիրառությունը gcc կոդի մեջ։

Սակայն,

For example, I think it goes without question that at this point we are
limiting ourselves to C++98 (plus “long long” so that we have a 64-bit
integer type); C++0x features should not be used. Using multiple
inheritance, templates (other than when using the C++ standard library,
e.g. std::list), or exceptions also seems overly aggressive to me.
We should use features that are relatively easy for C programmers to
understand and relatively hard for new C++ programmers to misuse. (For
example, I think constructors and destructors are pretty easy and hard
to misuse.)

Because C++ is a big language, I think we should try to enumerate what
is OK, rather than what is not OK. But, at the same time, I don’t think
we should try to get overly legalistic about exactly what is in and what
is out. We need information guidelines, not an ISO standard.

որոշված է կիրառել որոշակի անորոշ (դեռ) լեզվի ենթաբազմություն։

Հարց է առաջանում՝ ո՞վ է հետևելու որ կոդը գայդլայններին համապատասխանի։

Ամենալավ լուծումը՝ ավտոմոտացումն է։ Եթե ավտոմատացնել, ապա դա նույնն է ինչ

սահմանել մի ենթաբազմություն ու իրա անունը դնել ասենք c++– կամ –c++, ++c–

կամ +-c-+

Ու էդպիսի ստանդարտ անել դրանով իսկ լուծելով չաղության հարցը։

C-ի դեպքում՝ SafeC-ն նմանատիպ օրինակն է։

Ադաի դեպքում դա արվել է SPARK լեզվի միջոցով։

Այսպիսով, լեզուն ֆսյո-տակի մի տեսակ ակնկարկում ա որ նիհարել ա ուզում։

_ու տենց _