tekst-editor til kodning

Tags:    programmering

<< < 12 > >>
Hej udviklere,
For en måneds tid siden testede jeg fra hukommelsen om det stadigvæk er ganske vist, at man uden videre kan lave html ved at omdøbe en notepad.txt til .html. Det er jo den rene magi! Osse css og js kán, herligt.
Lessee .. hvad med vb og cs. Hille-mænd osse de er goe' nok.
.. Så kommer jævlen op i mig .. hmmm, hvor langt kan man så gå på den måde?
Jeg prøver at åben en project-file ind i notepad. Den er med på dét og viser en xml. Der må godt nok være mere til det end xml, for ved almindelig 'åben'-klik bliver Studio Express åbnet.
Solution-filen kan osse, men virker ikke særlig interesant.
.
Ved kodning i Visual Express bliver der genereret en del filer og mapper. Men for en form-applikation der ikke kræver læse/skrive-rettigheder eller hviler på eksotiske biblioteker kan man pille .exe'en ud af bin-mappen, distribuere og fyre af uden videre hensyn.
.
Det er selvfølgeligt naivt at spørge, om det nu ér så alvorligt det der skér mellem .cs'en og .exe'n ... altså, .cs'en har alt den kode der skal bruges i 'mit' program, og .exe'n ér virkeligørelsen af programmet.
Så er mit endelige spørgsmål: hvor lidt kan man slippe afsted med at håndskrive for selv at håndtere bindeleddet mellem .cs'en og .exe'n ?



http://da.wikipedia.org/wiki/Compiler

Jeg tror at hvis du læser den artikel kunne få svar på mange af dine spørgsmål. Det som du kalder "magi", er bare såkaldt "source-code". Source code er ren tekst, som en "compiler" (eller "intepreter"), oversætter til noget kode som maskinen forstår og kan afvikle.

For selv at skrive "bindeleddet" mellem source coden og den eksekverbare file, skal man som regel have et indgående kendskab til hvordan computer hardware fungerer. Umiddelbart er dette led noget som vi programmører lader andre specialiserede programmører bekymrer sig om, mens vi bekymrer os om at skrive ordentlig kode til disse compilere.



Går ud fra du mener hvor meget skal jeg gøre for få mit C# eller VB.Net kildekode til et kørbart program. Svaret er ikke særlig meget. Du skal blot fortælle compileren hvilken kildefil den skal oversætte. Se denne post på stack overflow: http://stackoverflow.com/a/9476760



Indlæg senest redigeret d. 10.03.2012 13:20 af Bruger #14645
Sæbekassebil skriver:
For selv at skrive "bindeleddet" mellem source coden og den eksekverbare file, skal man som regel have et indgående kendskab til hvordan computer hardware fungerer. Umiddelbart er dette led noget som vi programmører lader andre specialiserede programmører bekymrer sig om, mens vi bekymrer os om at skrive ordentlig kode til disse compilere.
---------
Sæbekassebil,
Du møder så mange newbies at jeg godt forstår din respons. Jeg skulle måske have nævnt, at jeg har en del års hobby-erfaring.
Jeg har skyet væk fra C++, fordi jeg synes at det er svært at komme til tåls med uden det helikopter-overblik man skal have for at jongelere med to filer (h & ccp) processor-directives, kompilation, linking osv osv.
Men, dét tilside - hvis en editor er go, så er der meget mindre at holde styr på .. imod, at man 'binder' sig til editoren.
Efter lang tilløb skrev jeg 15000 linjer for directx.3d i vb. Og døde efter næste win+studio install. Jeg ved stadigvæk ikke, hvorfor jeg mistede adgang til directx.3d, men det var slut med at udvikle videre med mit udgangspunkt. Den oplevelse har givet mig et noget køligt forhold til specifikke editorer.
.
Skal jeg forstå dig sådan, at hvis du var lærer, så ville du osse tilskynde dine elever til at finde gode editorer til html, css, javascript, php og C# så de kan slippe for at tage stilling til den kode der bliver genereret?
Jeg må tilstå at jeg bliver noget spids i tanken når påståede C# studerende som arbejder i Studio kommer her og spørger, uden at konsultere den omfattende hjælp de allerede har adgang til.
.
Bort set fra C++ synes jeg du har ret i at mit indlæg er på kanten, men det kunne da godt være at der er én som ville finde spørgsmålet udfordrende.

// edit

Søren;
Hvor er karma-knappen!
Du rammer hammeren lige på sømmet ;o) big smile



Indlæg senest redigeret d. 10.03.2012 14:21 af Bruger #17086
Du kan inddele programmeringssprog på mange måder - en måde er om det oversættes før det køres eller mens det kører.

Sprog som oversættes før de køres tæller blandt andet C, C++, C# og Java. Du kører dem gennem en compiler, får en .exe - eller anden eksekverbar fil ud - som du derefter kører.

Sprog som oversættes on the go tæller blandt andet Python, PHP og JavaScript. Du skriver kildekoden, og når du vil køre programmet så læser du kildefilen ind i en fortolker, som derefter oversætter koden.

Det der sker mellem din .cs og din .exe fil er, at din kildekode bliver oversat fra plain-tekst til CLR som så køres gennem .NET platformen som oversætter det til maskinkode som eksekveres. Svarende til hvordan Javakode oversættes og køres på Java platformen.

C og C++ oversættes direkte til maskinkode når du oversætter det.

PHP, Python og Ruby oversættes ikke men læses af en fortolker som så on the fly oversætter til noget som maskinen kan køre.

Så det korte svar er - du kan ikke bare ændre filtypen fra .cs til .exe og få dit program. For der sker en oversættelsesprocess, som er nødvendig for at den kan udføres af en maskine.

At du kan skrive html, javascript, php og python i plain-tekst editors uden at kompile dem er ikke magi. Det er fordi de fortolkes når de læses - og derfor er det ikke andet end tekst.

Der er som sådan ikke noget der forhindrer dig i at du skriver dine .cs filer i notepad og derefter kompilerer dem. Din IDE ændrer ikke på at kildekoden ligger i plaintext.



Indlæg senest redigeret d. 10.03.2012 17:24 af Bruger #17015
PHP, Python og Ruby oversættes ikke men læses af en fortolker som så on the fly oversætter til noget som maskinen kan køre.


Det afhænger meget af, hvilket runtime environment du bruger. Zend JIT compiler PHP og V8 (JavaScript motoren i Chrome) JIT compiler JavaScript i samme stil som Java og C#. Det findes sikkert også til de andre store sprog.
JRuby omskriver Ruby til JVM maskinkode, som JVM'en JIT compiler.



Indlæg senest redigeret d. 10.03.2012 21:03 af Bruger #2695
@Robert, Du har helt ret, men det er lidt ude af scope for min forklaring. Pointen står stadig. Alle sprog virker uden JIT compiling, og det er ikke default behaviour. C# og Java kan ikke køre uden...



Tror nu nok at JIT er default i PHP. Zend er svjv. blevet indbygget i PHP.

Og både C# og Java kan compiles hele vejen til maskinkode, og faktisk så findes der også C fortolkere, så intet er helt sort/hvidt.



Hold nu op med flueknepperiet... Jeg synes jeg har sagt, at jeg er enig i at det ikke er så sort/hvidt- men at jeg synes at det var ude for rammen for hvad der var nødvendigt at fortælle for at få forklaringen til at give mening. Det handler om de principielle forskel på forskellige programmeringssprog.

edit: For at ryde forvirringen af banen vil jeg lige tilføje at PHP ikke bliver JIT-compiled. Når et PHP script bliver kørt bliver det lavet til opcode, af Zend Engine, som derefter fortolkes af Zend VM. Desuden er det default at have opcode caching ved hjælp af APC.

Der findes andre projekter som forsøger at optimere PHP's performance - det mest kendte er HipHop fra facebook, som oversætter PHP koden til C++ som derefter compiles. PHC oversætter PHP til C. Phlanger (eller noget i den dur) gør det muligt at bruge PHP på .NET - og det er i øvrigt den eneste jeg kan finde hvor JIT-compiling faktisk er en del af processen. Der findes sikkert et PHP->Java projekt og der vil JIT-compiling i så fald også finde sted.



Indlæg senest redigeret d. 10.03.2012 23:59 af Bruger #17015


Det der sker mellem din .cs og din .exe fil er, at din kildekode bliver oversat fra plain-tekst til CLR som så køres gennem .NET platformen som oversætter det til maskinkode som eksekveres. Svarende til hvordan Javakode oversættes og køres på Java platformen.



Du mener vel at din C# kode bliver kørt gennem en compiler, som oversætter det til IL kode, og som derefter bliver JIT'tet NÅR koden bliver kaldt. Det vil sige hvis koden ikke bliver oversat helt på compile time.






@Martin, Ja, koden bliver oversat til et sprog, som er fælles for .NET platformen, som derefter JIT-compiles ved runtime. Undskyld hvis jeg ikke var helt præcis. Men jeg synes stadig det er noget flueknepperi. Det er en principiel forklaring for hvorfor det ikke er nok at omdøbe en .cs fil til .exe... Der kunne skrives mange bøger om alle detaljerne i det her, og det vil ikke give mening at skulle afdække det hele for at svare på Carstens oprindelige sprøgsmål.

@Carsten, Karma knappen findes kun på spørgsmåls tråde og ikke debat tråde... :-) Det vælger du når du opretter en tråd.



Indlæg senest redigeret d. 11.03.2012 13:13 af Bruger #17015
<< < 12 > >>
t