Fordele og ulemper ved programmeringssprog?

Tags:    diverse

<< < 123 > >>
Hej

Er der nogle der kan forklare fordelene og ulemperne ved følgende programmeringssprog:

Visual Basic
C
C++
Assembler
Fortran




21 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej

Er der nogle der kan forklare fordelene og ulemperne ved følgende programmeringssprog:

Visual Basic
C
C++
Assembler
Fortran


Visual Basic bruges tit og ofte til at hurtigt lave grafiske programmer. VB har ikke samme hastighed som nogle af de andre sprog. Selve syntaxen i Basic sproget(Som VB er baseret på) er rigmelig nem at gå til, men har også sine begrænsninger.

C er et "gammelt" sprog, med nogle forskellige mangler. Bla er der ikke mulighed for dynamiske arrays. Strenge er arrays(Med fast størrelse) af Chars, og der er nogle andre ting. Tilgengæld er der ingen overhead i C så det er derfor utrolig hurtigt(Hvis man skriver sin kode rigtigt selvfølgelig). Syntaxen i C er rigmelig nem at lære men svær at mestre.

C++ er den "nye" C. C++ fixer nogle af de problemer som C havde, som f.eks. Strenge og dynamiske arrays. C++ understøtter også OO kode, så man kan udnytte det. En af de største forskelle mellem C++ og C er at C++ har fået et såkaldt STL(Standard Template Library). STL indeholder bla. Strenge, dynamiske arrays, køer og lister. Syntaxen i C++ er stortset magen til den i C, så det er rigmelig nemt at gå fra C til C++.

Assembler er faktisk "bare" en bunke kommandoer. I assembler sørger DU for at holde styr på din hukommelse. Der er intet der hedder klasser, strenge, lister, køer, arrays etc. Det er det mest umenneskelige sprog der findes(Ok, det er maskinkode så det giver sig selv :P). Alt det gør tilgengæld at der er INTET der overgår Assembler i hastighed.

Desværre kender jeg ikke til Fortran, så der kan jeg ikke give pros and cons...

MH.

The-Freak

Livet er for kort til at kede sig.

[Redigeret d. 02/04-05 17:53:53 af The-Freak]



I assembler sørger DU for at holde styr på din hukommelse. Der er intet der hedder klasser, strenge, lister, køer, arrays etc.


Det skal du også i C og C++, dog findes der teknikker som RAII der gør det en del lettere.

Alt det gør tilgengæld at der er INTET der overgår Assembler i hastighed.


Jo, de fleste compilere. Det tager urealistisk lang tid at optimere et assembler-program i hånden, hvor en compiler kan gøre det på få sekunder. Når man når op på nogle tusinde linjer, bliver det en uoverskuelig opgave at optimere assembler. Der er dog nogle ting man kun kan gøre i maskinkode, men det er ikke noget de fleste kommer til at beskæftige sig med.

Desværre kender jeg ikke til Fortran, så der kan jeg ikke give pros and cons...


Det er et gammelt og modent sprog, designet til mainframes og supercomputere. Det er ekstremt hurtigt til numeriske udregninger, og bliver derfor brugt til meget matematik. Det bruges næsten aldrig til almindelige applikationer.

--
I\\\\\\\\\\\\\\'m bloggin\\\\\\\\\\\\\\' it.
http://www.sigkill.dk/blog




C er et "gammelt" sprog, med nogle forskellige fejl.

Begrænsninger - ikke fejl!


Lidt hjælp til at vælge mellem C og C++, hvis det skulle interessere:
http://unthought.net/c++/c_vs_c++.html


Alt det gør tilgengæld at der er INTET der overgår Assembler i hastighed.

Da Assembly (ASM) bare er symbolsk maskinkode, så er der en vis sandhed i den sætning, MEN: det afhænger altid af programmøren, og derfor kræver det en del øvelse at kunne overgå compileren i generelt.


De steder, hvor ASM kommer stærkt til hjælp, er normalt ved udnyttelse af de nyere teknologier - så som SSE, SSE2, SSE3 og 3DNow! - da disse normalt vil kunne optimeres bedre af programmøren end af compileren til specifikke situationer.

1101110100010110000101000001

Killers don\\'t end up in jail - they end up on a high-score!

[Redigeret d. 02/04-05 16:29:38 af Nicolai Lyster Fersner]



Jo, de fleste compilere. Det tager urealistisk lang tid at optimere et assembler-program i hånden, hvor en compiler kan gøre det på få sekunder. Når man når op på nogle tusinde linjer, bliver det en uoverskuelig opgave at optimere assembler. Der er dog nogle ting man kun kan gøre i maskinkode, men det er ikke noget de fleste kommer til at beskæftige sig med.


Nu mente jeg så også TEORETISK set!!

MH.

The-Freak

Livet er for kort til at kede sig.



Begrænsninger - ikke fejl!


Jo, fejl, i kraft af at de aldrig ville blive en del af et moderne programmeringssprog. Specielt C's "implicit int" regel må da ses som en fejl, eller hvad med alle de implicitte casts? De resulterer ofte i obskure fejl. Heldigvis har C++ rettet mange af disse.
--
I\\\\\\\\\\\\\\'m bloggin\\\\\\\\\\\\\\' it.
http://www.sigkill.dk/blog



Begrænsninger - ikke fejl!


Jo, fejl, i kraft af at de aldrig ville blive en del af et moderne programmeringssprog. Specielt C's "implicit int" regel må da ses som en fejl, eller hvad med alle de implicitte casts? De resulterer ofte i obskure fejl. Heldigvis har C++ rettet mange af disse.
--
I\\\\\\\\\\\\\\'m bloggin\\\\\\\\\\\\\\' it.
http://www.sigkill.dk/blog


Ja okay, jeg kan godt se at det var forkert formuleret, for jeg tænkte nu mest på hans eksempler da jeg skrev det.
For hans eksempler er jo ikke fejl, det er begrænsninger.

Men jeg har nu ikke forstået hvad han mener med ingen mulighed for dynamiske arrays :S
char *a = malloc(12); virker da lige så godt i C, som i C++ (på high-level selvfølgelig).

1101110100010110000101000001

Killers don´t end up in jail - they end up on a high-score!

[Redigeret d. 02/04-05 17:11:51 af Nicolai Lyster Fersner]



Ja, jeg er godt klar over at du kan gøre det med en pointer! Men det var ikke det jeg snakkede om ! Jeg snakkede om at i C kan du ikke lave dynamiske arrays så nemt som du kan i C++... Det er et faktum!

MH.

The-Freak

Livet er for kort til at kede sig.



Med hensyn til fejl/mangler ved C:
Jeg vil ikke kalde det fejl, det er den måde det er designet til at virke, og så kan man vil ikke kalde det fejl. Den gang man lavede C var det et stort spring fremad, det er bl.a. derfor at det i mange år har været det mest benyttede sprog.
At C ikke har dynamiske arrays er noget vrøvl, det hedder pointere.

Der er i dag ikke nogen væsentlig grund til at bruge C, medmindre der ikke er alternativer, det er der f.ex. ikke på små indlejrede/embeddede systemer, og til nogle hardware nære drivere.



Ja, jeg er godt klar over at du kan gøre det med en pointer! Men det var ikke det jeg snakkede om ! Jeg snakkede om at i C kan du ikke lave dynamiske arrays så nemt som du kan i C++... Det er et faktum!

MH.

The-Freak

Livet er for kort til at kede sig.


Læs din post; du skrev at man ikke havde mulighed for dynamiske arrays, så det svarede jeg på...
Du kan vælge at bruge de forskellige containers fra STL til at gøre arbejdet for dig og derved undgå fejl mv, men det er stadig kun et valg du kan tage. Du allokerer stadig hukommelse i C++ som i C (set fra programmørens synsvinkel), hvis du benytter malloc.

1101110100010110000101000001

Killers don\\'t end up in jail - they end up on a high-score!




Godt så... Dynamiske arrays i C = pointere... Og så er det vidst uddebateret !!!!

MH.

The-Freak

Livet er for kort til at kede sig.



<< < 123 > >>
t