Προς το περιεχόμενο

Διαφορές C, C++ και C#


xrist0f0r0s

Προτεινόμενες αναρτήσεις

Kι όμως, η γλώσσα με την οποία φτάσαμε πιο μακριά είναι η Fortran όσο απίστευτο κι αν ακούγεται :

 

Σκεφτείτε μόνον ότι με αυτήν πήγαν τα επανδρωμένα Αpollo 11 - 14 στη σελήνη.

Το Viking στον Αρη.

Τα Pioneer 10 & 11 βγήκαν πρώτα από το ηλιακό σύστημα και τα Voyager έφτασαν στον Ουρανό και τον Ποσειδώνα.

 

Όσοι στοχεύουν στ' αστέρια....Fortran !!

H γλώσσα του διαστήματος αποδεδειγμένα.... :D :D :D

 

-

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 168
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Όσον αφορά τον υπολογιστή σκάφους των Apollo (AGC) μιας και είχα ασχοληθεί παλαιότερα, το λογισμικό του γράφηκε σε μια μορφή high-level (θα την λέγαμε πιο σωστά σήμερα "meta") assembly ειδικά κατασκευασμένη για τις ανάγκες της επιχείρησης (όπως ήταν άλλωστε και ολόκληρος ο υπολογιστής). Αν τώρα εννοείς το λογισμικό που έτρεχαν οι επίγειοι υπολογιστές και μέσο τηλεμετρίας ενημέρωναν τους υπολογιστές του σκάφους ή επιβεβαίωναν τους on-board υπολογισμούς τους καθώς οι τελευταίοι ήταν αρκετά αδύναμοι για πολύπλοκους μαθηματικούς υπολογισμούς και επίφοβοι για σφάλματα ακρίβειας, συμφωνώ απόλυτα ότι η FORTRAN ήταν γλώσσα επιλογής (από ότι βλέπω, από την εποχή των GEMINI βλ. spoiler).

 

 

Υ.Γ.

Εδώ γίνεται προσπάθεια να γραφθεί ένας emulator του AGC που να τρέχει τα αυθεντικά διασωθέντα sources.

Και εδώ.. το source code του GEMINI emulator γραμμένο σε FORTRAN, δεν είναι το ίδιο το λογισμικό που έτρεχε ο Η/Υ του GEMINI αλλά είναι ο emulator για την διαδικασία ραντεβού & τροχιακής σύνδεσης που χρησιμοποιούσε η NASA για τις δοκιμές του. Εικάζεται ότι το πρόγραμμα αυτό αργότερα μεταγράφηκε σε μορφή συμβατή (OBC Assembly Language) με το αδύναμο GEMINI CPU (κανείς δεν θυμάται πια με σιγουριά :-\) -πιστεύω ότι θα σου φανεί πολύ ενδιαφέρον (εγώ από FORTRAN δεν κατέχω).

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ενδιαφέρον link, φίλε directx.

Κάπου είχα διαβάσει ότι το συνολικό πρόγραμμα είχε περίπου 100k γραμμές.

 

Θυμάμαι επίσης χαρακτηριστικά και το εξής :

Ο προσανατολισμός του διαστημοπλοίου γινόταν με γωνίες Εuler. Όμως αυτός ο τρόπος υποφέρει από Gimbal Lock.

Αυτό είναι σοβαρό πρόβλημα και ήταν τόσο δύσκολο να διευθετηθεί αποτελεσματικά ώστε επηρέασε σημαντικά τον σχεδιασμό του προγράμματος :

το διαστημόπλοιο δεν επιτρεπόταν να λάβει ορισμένες θέσεις (προσανατολισμό, κλίση) που θα το έφερναν κοντά σε gimbal lock διότι οι

υπολογιστές θα έχαναν τον έλεγχό του με αποτέλεσμα την καταστροφή.

Σήμερα χρησιμοποιούνται quaternions (κβατέρνια).

Αν και τα κβατέρνια (τετραδόνια επί το ελληνικότερον) υπήρχαν από το 1842 και ήταν πολύ μελετημένα από τους μαθηματικούς,

δεν ήταν γνωστά σε αυτούς που έγραφαν το πρόγραμμα πλοήγησης με αποτέλεσμα τέτοιους περιορισμούς....

 

Για την συνέχεια της ιστορίας, τα κβατέρνια "ξανα-ανακαλύφθηκαν" στην πληροφορική κάπου προς τα μέσα του 1980,

νομίζω από τον Shoemake, και άρχισαν να τα χρησιμοποιούν στα γραφικά.

 

-

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πολύ ενδιαφέρον καθώς δένει με τούτο εδώ όπου ένας παλαίμαχος προγραμματιστής (Eugene Mertz) της ομάδος που είχε αναλάβει την συγγραφή του λογισμικού για την τροχιακή πτήση των GEMINI θυμόταν (βλ. παράγραφο "From Eugene Mertz") πως το σχεδιασμό του λογισμικού για αυτή την εργασία είχε κάνει ένας μηχανικός της IBM πρώην πανεπιστημιακός καθηγητής ο οποίος μάλιστα από νωρίς άρχισε να τους διδάσκει "ουράνια τροχιακή μηχανική" καθώς οι άνθρωποι δεν είχαν τέτοια εξειδίκευση (άρα ακολουθούσαν τις οδηγίες του και ότι έμαθαν από αυτόν πίστα ..και μόνο).

 

 

Υ.Γ.

Και όμως τελικά ταξιδέψαμε μακριά από το λίκνο του πολιτισμού μας - για να φτάσουμε στο σήμερα όπου η NASA δεν έχει άμεσο αντικαταστάτη για το Διαστημικό Λεωφορείο (κατάντια) :-(

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 μήνες μετά...

Λοιπόν επαναφέρω λίγο το θέμα.

Είναι 13 σελίδες, αλλά δυστυχώς αν συγκεντρώσω τα on-topic θα φτάσει στις 3, γι' αυτό και δεν καλύφθηκα πλήρως.

 

Έχω καταλάβει πως προφανώς δεν μπορεί η απάντηση στην ερώτηση "ποια γλώσσα να μάθω πρώτα" δεν είναι, και δεν θα μπορούσε να είναι άμεση και κοινώς αποδεκτή.

 

Επομένως..

Έχω κάνει λίγη, πάρα πολύ λίγη C. Σε επιλεγόμενο μάθημα στη σχολή μου. Φτιάξαμε 2-3 προγραμματάκια, πάρα πολύ απλά για command line execution.

Γενικά την ακολουθιακή λογική, την επαγωγική σκέψη και την χρήση αλγορίθμων μπορώ να πω πως την κατέχω, και μου αρέσει να σκέφτομαι έτσι.

Έχω ένα βιβλίο απο το μάθημα της σχολής μου, "C για μηχανικούς". Δεν το πολυδιάβασα γιατί δεν μας χρειάστηκε πάρα πολύ, μιας και δεν κάναμε πολύ θεωρία, αλλά με μια γρήγορη ματιά δεν μου άρεσε πολύ.

Άλλο βιβλίο δεν θα ήθελα να αγοράσω, θα ήθελα να μάθω απο pdfs και online-tutorials, καθώς δεν θα ήθελα να πληρώσω λεφτά μόνο για να περάσει η ώρα μου.

 

Τώρα, επειδή έχω λίγο ελεύθερο χρόνο για μερικούς μήνες, λέω να μάθω λίγα παραπάνω πράγματα.

Θα ήθελα απλά να φτάσω σε σημείο να φτιάχνω low level εφαρμογές για windows ή για windows phone 7 ενδεχομένως. Καμία σχέση με εμπορικές εφαρμογές κτλ. Απο ότι έχω δει, για λίγο πιο άμεσα αποτελέσματα, και ευκολία, η C# θα ήταν η καλύτερη επιλογή, σωστά;

Απο την άλλη, επειδή τέτοιος είναι ο τύπος μου, θα νιώθω οτι μου λείπουν πράγματα. Δηλαδή ενώ δεν θα ήθελα μόνο να μάθω μια γλώσσα μόνο και μόνο για τη θεωρία, αλλά να μπορώ να την εφαρμόσω κάπου, ποτέ δεν ήμουν αυτού του τρόπου σκέψης. Πάντα ήθελα να ξέρω τις βάσεις.

 

Συνοψίζοντας: Ενώ τείνω να καταλήξω στην C#, μήπως είναι εύκολη επειδή στα δίνει λίγο έτοιμα ή καμία σχέση αυτό που λέω; Γιατί δεν μου αρέσει να μου τα δίνουν έτοιμα.

Και τέλος με την C# τι περιορισμούς έχω; Προφανώς δεν κάνει τα πάντα, αλλά στα βασικά όπως έχω προσπαθήσει να περιγράψω, θα συναντήσω πρακτικούς περιορισμούς;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συνοψίζοντας: Ενώ τείνω να καταλήξω στην C#, μήπως είναι εύκολη επειδή στα δίνει λίγο έτοιμα ή καμία σχέση αυτό που λέω; Γιατί δεν μου αρέσει να μου τα δίνουν έτοιμα.

Και τέλος με την C# τι περιορισμούς έχω; Προφανώς δεν κάνει τα πάντα, αλλά στα βασικά όπως έχω προσπαθήσει να περιγράψω, θα συναντήσω πρακτικούς περιορισμούς;

 

Generic γλώσσα είναι η C#, οπότε κάνει (σχεδόν) τα πάντα. Ο βασικός της περιορισμός είναι η εξάρτησή της από το .net, που σε non-Windows πλατφόρμες προσομοιώνεται από το (όχι και τόσο απροβλημάτιστο) mono.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία. Αυτό το είδα αργότερα, για το mono, κυρίως όταν έψαχνα και για android.

Απο άποψη γνώσεων; Εννοώ γενικών γνώσεων επι προγραμματισμού; Θα μου δώσει μια γενικότερη ιδέα;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία. Αυτό το είδα αργότερα, για το mono, κυρίως όταν έψαχνα και για android.

Απο άποψη γνώσεων; Εννοώ γενικών γνώσεων επι προγραμματισμού; Θα μου δώσει μια γενικότερη ιδέα;

Καταρχήν αφού σε ενδιαφέρει ο προγραμματισμός Windows Phone, η C# είναι απαραίτητη. Μαζί της νομίζω ότι θα μάθεις αρκετά εύκολα και πρακτικά τις βασικές αρχές του αντικειμενοστραφούς προγραμματισμού δίχως τα στρυφνά (και ισχυρά όμως υπό προϋποθέσεις) σημεία της C++. Ταυτόχρονα θα εξοικειωθείς με διάφορες δομές δεδομένων οι οποίες παρέχονται έτοιμες προς χρήση, η εξοικείωση σου αυτή βέβαια δεν θα είναι στο να μάθεις πως να τις κατασκευάζεις (όπως συμβαίνει πχ στην C) αλλά πως να τις εκμεταλλεύεσαι εντός ενός προγράμματος. Γλυτώνεις επίσης τον μπελά της διαχείρισης μνήμης (φυσικά και εδώ χρειάζεται προσοχή για να μην ζορίσεις το GC της) και τούτο για άλλους είναι θετικό για άλλους αρνητικό (προσωπικά θεωρώ ότι καλό είναι να μάθεις τα βασικά στην διαχείριση μνήμης και ύστερα να πας σε αυτοματισμούς αλλά... ). Φυσικά θα έρθεις σε άμεση επαφή με οπτικό προγραμματισμό, φόρμες, πλήκτρα, κοντρόλς, γνώσεις δηλαδή που είναι απαραίτητες πλέον. Γενικά μαθαίνοντας το .NET Framework αποκτάς σφαιρική γνώση και άμεση ικανότητα στην ανάπτυξη ενός ευρύτατου φάσματος εφαρμογών οπότε νομίζω ότι αξίζει τον κόπο να το ψάξεις ειδικά αν σε ενδιαφέρει να "κάνεις δουλειά" και όχι να μαθαίνεις τις εσωτερικές λεπτομέρειες σε κάθε τι που θα χρειασθεί να χρησιμοποιήσεις για να γράψεις ένα πρόγραμμα (πχ. Συμπίεση Δεδομένων ή Κρυπτογράφηση κλπ).

 

Υ.Γ.

Αυτά στα λέω καθώς γράφω σε C/C++, Java (ME & Android), C# και νομίζω ότι έχω δει αρκετά μαζί τους πια..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εφόσον λες πως σε ενδιαφέρει κυρίως low-level, οι C/C++ είναι οι προφανείς επιλογές. Καμία όμως γλώσσα δεν μαθαίνεται σε μερικούς μόνο μήνες (που λες ότι διαθέτεις).

 

Αν θες να πάρεις γερές βάσεις για μετάβαση σε οποιαδήποτε άλλη γλώσσα μετά, κι εφόσον σε ενδιαφέρει low-level, εγώ σου προτείνω ανεπιφύλακτα C και μάλιστα με συγκεκριμένο βιβλίο: C Programming: A Modern Approach, 2nd Edition του King (αν... ψαχτείς θα το βρεις ;) )

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μάλιστα. Ευχαριστώ.

Δεν είναι αυτοσκοπός η ανάπτυξη σε wp7, αλλά έτσι όπως το περιγράφει ο directx, και έτσι έχω διαβάσει και αλλού δηλαδή, νομίζω μου ταιριάζει περισσότερο η C#, παρότι όντως δέχομαι και πιστεύω πως μια καλή μελέτη της c μπορουσε να μου δωσει περισσότερες βάσεις.

Αλλά προς το παρόν δεν σκέφτομαι να μάθω άλλες γλώσσες, αλλά να έχω μια ιδέα και να μπορώ οποτε χρειαστεί να κάνω κάτι πολύ απλό και γενικό να το κάνω ξεκινόντας απο μια βαση.

Απο αύριο ξεκινάω διαβασματάκι για C#.

 

Edit:

Μπορείτε να μου προτείνεται κανένα βιβλίο για διάβασμα, γιατί με τα tutorials δεν μαθαίνεις αρκετά συνήθως.

Δεν έχει σημασία Ελληνικό ή Αγγλικό (αλλά συνήθως τα Αγγλικά βρίσκονται πιο εύκολα, γι' αυτό :devil:).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Edit:

Μπορείτε να μου προτείνεται κανένα βιβλίο για διάβασμα, γιατί με τα tutorials δεν μαθαίνεις αρκετά συνήθως.

Δεν έχει σημασία Ελληνικό ή Αγγλικό (αλλά συνήθως τα Αγγλικά βρίσκονται πιο εύκολα, γι' αυτό :devil:).

 

http://pdfebooksfree...-reference.html

 

EDIT:

 

Κι εφόσον δεν έχει πολυ-ασχοληθείς με προγραμματισμό, η γνώμη μου είναι να ΜΗΝ κατεβάσεις το Visual Studio γιατί μάλλον θα χάσεις την μπαλα! Εφόσον έχεις εγκατεστημένο το .net 4 το μόνο που χρειάζεται για να ξεκινήσεις είναι ένας text-editor με syntax highlighting (π.χ. Notepad++).

 

Κάνε search να βρεις σε ποιο φάκελο είναι το csc.exe, βάλτο στο path των Windows και είσαι έτοιμος ;)

 

Γράφεις το πρόγραμμά σου στον editor, το ονομάζεις π.χ. hello.cs, γράφεις στην κονσόλα: csc hello.cs και μετά: hello και τρέχει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

http://pdfebooksfree...-reference.html

 

EDIT:

 

Κι εφόσον δεν έχει πολυ-ασχοληθείς με προγραμματισμό, η γνώμη μου είναι να ΜΗΝ κατεβάσεις το Visual Studio γιατί μάλλον θα χάσεις την μπαλα! Εφόσον έχεις εγκατεστημένο το .net 4 το μόνο που χρειάζεται για να ξεκινήσεις είναι ένας text-editor με syntax highlighting (π.χ. Notepad++).

 

Κάνε search να βρεις σε ποιο φάκελο είναι το csc.exe, βάλτο στο path των Windows και είσαι έτοιμος ;)

 

Γράφεις το πρόγραμμά σου στον editor, το ονομάζεις π.χ. hello.cs, γράφεις στην κονσόλα: csc hello.cs και μετά: hello και τρέχει.

 

Έχω δουλέψει visual studio, με C, αλλά όπως είπα πάρα πολύ λίγα πράγματα.

Αλλά θα ξεκίναγα με codeblocks μάλλον για IDE, ξέροντας όντως οτι το notepad++ είναι πολύ καλός editor, και το έχω και ήδη μέσα, οπότε θα δω.

Ας μάθω πρώτα...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...