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

αξιζει να μαθω γλωσσα προγραματισμου (C++)?


ραφa

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

Επισκέπτης
Στις 19/6/2018 στις 8:53 ΜΜ, solarpower είπε

@ραφa

Θα πρότεινα να ξεκινήσει κανείς με assembly. Μαθαίνει τα βασικά με τον πιο απλό προγραμματισμό (το οποίο όμως για να κάνεις πολλά πράγματα είναι κουραστικό...), αλλά για να μάθει κανείς δεν είναι τίποτα!

Ναι με assembly, και όταν είσαι έτοιμος να φτιάξεις το πρώτο σου παιχνίδι μην κατεβάσεις καμιά Unity η Unreal, φτιάξε τη δική σου game engine αντρικά. Απλά πράγματα, ξεκίνα με renderer, physics, memory management, caching κτλ... 

Όταν βγάλεις άσπρες τρίχες έλα να σε ξανασυμβουλεύσουμε...

Τι λες μωρέ;; Ποιος ξεκινάει με assembly και δεν τα παρατάει σε 20 λεπτά;;; 

 

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

Δημοσ. (επεξεργασμένο)

@Davelis4

Πριν γράψεις ό,τι να είναι πάρε και μια άλλη γνώμη:

https://www.quora.com/How-easy-is-it-to-learn-assembly

 

Προφανώς δεν έχεις μια επαφή με την Assembly. Επίσης δεν είδες ότι η προτροπή μου για μια επαφή με την Assembly, είναι πάνω σε μικρά προγράμματα και όχι στο να φτιάξει παιχνίδια! Με την υπερβολή που έβαλες, κατάφερες να γελάσεις με αυτήν! Αυτό λέγεται αυτοσαρκασμός!

 

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

Επισκέπτης
2 λεπτά πριν, solarpower είπε

@Davelis4

Πριν γράψεις ό,τι να είναι πάρε και μια άλλη γνώμη:

https://www.quora.com/How-easy-is-it-to-learn-assembly

Προφανώς δεν έχεις μια επαφή με την Assembly. Επίσης δεν είδες ότι η προτροπή μου για μια επαφή με την Assembly, είναι πάνω σε μικρά προγράμματα και όχι στο να φτιάξει παιχνίδια! Με την υπερβολή που έβαλες, κατάφερες να γελάσεις με αυτήν! Αυτό λέγεται αυτοσαρκασμός!

Οκ, έστω εγώ είμαι άσχετος.

Πείσε με ότι ένα παιδί 15-16 χρονών που περιμένει να δει κάτι ωραίο να του κεντρίσει το ενδιαφέρον (ένα ωραίο UI πχ)

θα ενθουσιαστεί που την print θα την γράφει ως syscall για να τυπώσει το καλημέρα κόσμε η θα πρέπει να μάθει εντολές απ'έξω. 

Στην MIPs που έκανα μια φορά και ένα καιρό μάθαινες και registers by heart.

Super easy, για αυτό στα περισσότερα πανεπιστήμια του εξωτερικού όλοι με assembly ξεκινάνε. Τα online tutorial, και αυτά με assembly ξεκινάνε. Τα ελληνικά πανεπιστήμια και αυτά με assembly.

Επειδή βρήκες ένα QA στο Quora από κάποιον που διδάσκει C/assembly δεν απέδειξες κάτι. Τόσοι καθηγητές και τόσα προγράμματα σπουδών διαφωνούν.

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

Στα πανεπιστήμια ασχολούνται με μεγαλύτερα παιδιά από 15-16 χρονών, οπότε η μεθοδολογία διαφέρει. Σε παιδιά λυκείου ήδη υπάρχει θέμα περί το τι μπορεί να διδαχθεί. Μπορεί να χρησιμοποιήσει κανείς το Scratch για να μάθει περί επαναλήψεων και συνθηκών.

Απλά εμένα μου αρέσει η Assembly, έτυχε και έπιασα αυτήν σε ίδια ηλικία με το νέο,  και την πρότεινα. Περίμενα να προτείνουν και την Scratch...αλλά τίποτα!

Προτείνω λοιπόν να μάθει τον flat assembler, επειδή δεν θα έχει κάποιον από πάνω του να του βάζει ασκήσεις, θα τις βάζει μόνος του, και επειδή αν κάνει πίσω, απλά δεν κάνει για προγραμματιστής!

https://flatassembler.net/examples.php

Αυτό με τη Mips μυρίζει ΤΕΙ; Και καλά μαθαίνει κανείς RISC Instruction set; Τι κακό έχει η x86 Assembly;

 

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

Επισκέπτης
12 ώρες πριν, solarpower είπε

Στα πανεπιστήμια ασχολούνται με μεγαλύτερα παιδιά από 15-16 χρονών, οπότε η μεθοδολογία διαφέρει. Σε παιδιά λυκείου ήδη υπάρχει θέμα περί το τι μπορεί να διδαχθεί. Μπορεί να χρησιμοποιήσει κανείς το Scratch για να μάθει περί επαναλήψεων και συνθηκών.

Απλά εμένα μου αρέσει η Assembly, έτυχε και έπιασα αυτήν σε ίδια ηλικία με το νέο,  και την πρότεινα. Περίμενα να προτείνουν και την Scratch...αλλά τίποτα!

Προτείνω λοιπόν να μάθει τον flat assembler, επειδή δεν θα έχει κάποιον από πάνω του να του βάζει ασκήσεις, θα τις βάζει μόνος του, και επειδή αν κάνει πίσω, απλά δεν κάνει για προγραμματιστής!

https://flatassembler.net/examples.php

Αυτό με τη Mips μυρίζει ΤΕΙ; Και καλά μαθαίνει κανείς RISC Instruction set; Τι κακό έχει η x86 Assembly;

Δεν είναι ΤΕΙ, CSD στο Ηράκλειο είναι. 

RISC γιατί ο καθηγητής ήταν στην ομάδα ανάπτυξης του RISC2. Κάποιοι θα το πούνε κόλλημα, για εμένα προσωπικά από τους καλύτερους καθηγητές στο τμήμα και καταξιωμένος. Τουλάχιστον, όποιος παρακολουθεί καταλαβαίνει. Για τους φοιτητές του τμήματος είναι ένας μαλάκας που βάζει δύσκολα...

x86 κάναμε σε κάποια άλλη φάση για μία εργασία προσπαθώντας να κάνουμε code injection.

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

Δημοσ. (επεξεργασμένο)
30 λεπτά πριν, Davelis4 είπε

Δεν είναι ΤΕΙ, CSD στο Ηράκλειο είναι. 

RISC γιατί ο καθηγητής ήταν στην ομάδα ανάπτυξης του RISC2.

Δεν είναι ο λόγος μόνο ο Κατεβαίνης. Όχι ότι έγινε κάτι, αν είναι αυτός ο λόγος. Τιμή σου που σε μαθαίνει ο ίδιος ο σχεδιαστής.

Η ερώτηση του θέματος είναι αν ένας 15χρονος χωρίς να έχει ιδέα από προγραμματισμό (και όπως φαίνεται υπάρχουν και άλλες σημαντικές ελλείψεις), θα πρέπει να ξεκινήσει με τη C++…, και όχι τι ξέρουμε εμείς ή πώς έχει ξεκινήσει ο καθένας.  Δεν αναφέρομαι σε εσένα.

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

Επισκέπτης
29 λεπτά πριν, marios28 είπε

Δεν είναι ο λόγος μόνο ο Κατεβαίνης. Όχι ότι έγινε κάτι, αν είναι αυτός ο λόγος. Τιμή σου που σε μαθαίνει ο ίδιος ο σχεδιαστής.

Η ερώτηση του θέματος είναι αν ένας 15χρονος χωρίς να έχει ιδέα από προγραμματισμό (και όπως φαίνεται υπάρχουν και άλλες σημαντικές ελλείψεις), θα πρέπει να ξεκινήσει με τη C++…, και όχι τι ξέρουμε εμείς ή πώς έχει ξεκινήσει ο καθένας.  Δεν αναφέρομαι σε εσένα.

Πιθανόν να μην είναι, αλλά πολύ θα πουν ότι είναι. Σίγουρα είχε επιχειρήματα για ποιο λόγο κάναμε RISC. 

Ναι, αυτή είναι η ερώτηση για αυτό είπα στον φίλο να μην προτείνει assembly σε έναν 15χρόνο.

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

Λοιπόν υπάρχουν επιχειρήματα για το λόγο που η ASSEMBLY είναι καλή για πρώτη εισαγωγή στο προγραμματισμό:

1. Κατανοούμε τους αριθμούς με πρόσημο και χωρίς, και το λόγο που είναι χρήσιμοι οι δεύτεροι (έχουν σχέση με τους λεγόμενους πληθικούς ή cardinal αριθμούς)

2. Κατανοούμε την έννοια της σημαίας (flag), καθώς και των υπό συνθήκη διακλαδώσεων

3. Μαθαίνουμε τις ομάδες εντολών, όπως αριθμητικές, λογικές, επαναλήψεων κ.α.

4. Μαθαίνουμε τι είναι index και τι offset (και ποια είναι η διαφορά τους, οπότε μαθαίνουμε τη διαχείριση της μνήμης), καθώς και το Indirection.

5. Έχουμε μια εικόνα του πώς εργάζεται ο επεξεργαστής, και πώς η κάθε εντολή σημαίνει "Χρόνος εκτέλεσης".

6. Δεν ασχολούμαστε με γλώσσες υψηλού επιπέδου, που κρύβουν πολλά κάτω από μια "διακριτή" εντολή. Όμως χωρίς κόπο μαθαίνουμε τι είναι δείκτης (pointer).

7.Μπορεί κανείς να ασχοληθεί με ένα μικρό αριθμό εντολών, και με ένα αρχικό αριθμό τρόπων προσπέλασης της μνήμης.

8.Κατανόηση της στοίβας τιμών/διευθύνσεων (ή στοίβας εκτέλεσης). Κατανόηση των τοπικών μεταβλητών και σχεδιασμός απλών συναρτήσεων

9. Δεν χρειάζεται να έχει κανείς ειδικά εργαλεία στον υπολογιστή: Μπορεί κανείς να τρέξει On-line assembly: https://www.tutorialspoint.com/compile_assembly_online.php

10. Όπως και το 9, μπορεί ο μαθητής να χρησιμοποιήσει Online βηματική εκτέλεση Assembly σε x86 Emulator.

11. Η γνώση χαμηλού επιπέδου γλώσσας προγραμματισμού κάνει τον χρήστη να εκτιμήσει τις γλώσσες υψηλού επιπέδου!

12. Αν κάποιος φάει κόλλημα με την Assembly, τότε μπορεί να κάνει καριέρα σε συστήματα υψηλής τεχνολογίας, όπου το ελάχιστο ms καθυστέρηση μετράει!

 

Υπάρχουν φυσικά και εφαρμογές που σε μαθαίνουν προγραμματισμό (ως ιδέες) με γραφικά και δράση από τον χρήστη - παιδί- παίκτη (είχα αναφέρει την Scratch) αλλά εδώ έχει μεγαλύτερη συλλογή εφαρμογών εκμάθησης προγραμματισμού.

https://codakid.com/coding-games-for-kids-the-best-way-to-teach-computer-programming/

 

Πάντως σε καμία περίπτωση ένα παιδί που θα πάρει τις σωστές δόσεις μάθησης, δηλαδή με έναν σταθερό εμπλουτισμό, ξεκινώντας από προγράμματα τριών-τεσσάρων εντολών να φθάσει στις τριάντα-σαράντα εντολές, δεν θα φοβηθεί την Assembly. Από το να την κατανοήσει στα βασικά της μέχρι να γίνει guru, απέχουν πολλές δεκαετίες,  ('ή για ελάχιστα άτομα, ίσως μόνο τρία με πέντε χρόνια). Αλλά αφενός θα κερδίσει ο μαθητής γιατί θα συνδέσει το υλικό (PC ή ό,τι άλλο)  με τη πραγματική γλώσσα που τρέχει εσωτερικά, και αφετέρου θα κερδίσει η πολιτεία αφού θα βρει εκείνα τα ελάχιστα άτομα που θα έχουν ταλέντο, και θα μείνουν σε αυτό.

Προσωπικά είμαι υπέρ του να βρίσκονται τα ταλέντα στην αρχή, και να προωθούνται. Μόνο με τέτοια άτομα θα ξεχωρίσουμε όλοι εμείς σαν χώρα. Ενώ τα περισσότερα άτομα απλά αναπαράγουν τα καθημερινά, προσθέτοντας εργατοώρες υπηρεσιών και παραγωγής αγαθών!

Για να γυρίσουμε στο φίλο λοιπόν που ρωτά για την c++. Η c++ είναι εργαλείο δύσκολο, αλλά αν κάποιος αρχίσει να το μαθαίνει σε μικρές απλές δόσεις, χωρίς διαλείμματα, θα το μάθει καλά. Καλό είναι να ξεκινήσει με αντιγραφές, να αντιγράφει μικρά προγράμματα, και να προσπαθεί να τα "χαλάσει" για να δει τι συμβαίνει.

Στο rosettacode.org μπορεί να βρει κανείς για την C++ πολλά προγράμματα (τα οποία έχει και σε άλλες γλώσσες όπως Python).

http://www.rosettacode.org/wiki/Category:C%2B%2B

για παράδειγμα το "πρόγραμμα" Α+Β δηλαδή η άθροιση δυο μεταβλητών σε όλες τις γλώσσες που περιέχονται στο rosettacode.org

http://www.rosettacode.org/wiki/A%2BB

Από την μεριά μου το έχω εξαντλήσει το θέμα (δεν γράφω μόνο για τον OP αλλά και για καθένα που διαβάζει εδώ).

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

Δημοσ. (επεξεργασμένο)
9 λεπτά πριν, solarpower είπε

Λοιπόν υπάρχουν επιχειρήματα για το λόγο που η ASSEMBLY είναι καλή για πρώτη εισαγωγή στο προγραμματισμό:

1. Κατανοούμε τους αριθμούς με πρόσημο και χωρίς, και το λόγο που είναι χρήσιμοι οι δεύτεροι (έχουν σχέση με τους λεγόμενους πληθικούς ή cardinal αριθμούς)

2. Κατανοούμε την έννοια της σημαίας (flag), καθώς και των υπό συνθήκη διακλαδώσεων

3. Μαθαίνουμε τις ομάδες εντολών, όπως αριθμητικές, λογικές, επαναλήψεων κ.α.

4. Μαθαίνουμε τι είναι index και τι offset (και ποια είναι η διαφορά τους, οπότε μαθαίνουμε τη διαχείριση της μνήμης), καθώς και το Indirection.

5. Έχουμε μια εικόνα του πώς εργάζεται ο επεξεργαστής, και πώς η κάθε εντολή σημαίνει "Χρόνος εκτέλεσης".

6. Δεν ασχολούμαστε με γλώσσες υψηλού επιπέδου, που κρύβουν πολλά κάτω από μια "διακριτή" εντολή. Όμως χωρίς κόπο μαθαίνουμε τι είναι δείκτης (pointer).

7.Μπορεί κανείς να ασχοληθεί με ένα μικρό αριθμό εντολών, και με ένα αρχικό αριθμό τρόπων προσπέλασης της μνήμης.

8.Κατανόηση της στοίβας τιμών/διευθύνσεων (ή στοίβας εκτέλεσης). Κατανόηση των τοπικών μεταβλητών και σχεδιασμός απλών συναρτήσεων

9. Δεν χρειάζεται να έχει κανείς ειδικά εργαλεία στον υπολογιστή: Μπορεί κανείς να τρέξει On-line assembly: https://www.tutorialspoint.com/compile_assembly_online.php

10. Όπως και το 9, μπορεί ο μαθητής να χρησιμοποιήσει Online βηματική εκτέλεση Assembly σε x86 Emulator.

11. Η γνώση χαμηλού επιπέδου γλώσσας προγραμματισμού κάνει τον χρήστη να εκτιμήσει τις γλώσσες υψηλού επιπέδου!

12. Αν κάποιος φάει κόλλημα με την Assembly, τότε μπορεί να κάνει καριέρα σε συστήματα υψηλής τεχνολογίας, όπου το ελάχιστο ms καθυστέρηση μετράει!

Υπάρχουν φυσικά και εφαρμογές που σε μαθαίνουν προγραμματισμό (ως ιδέες) με γραφικά και δράση από τον χρήστη - παιδί- παίκτη (είχα αναφέρει την Scratch) αλλά εδώ έχει μεγαλύτερη συλλογή εφαρμογών εκμάθησης προγραμματισμού.

https://codakid.com/coding-games-for-kids-the-best-way-to-teach-computer-programming/

Πάντως σε καμία περίπτωση ένα παιδί που θα πάρει τις σωστές δόσεις μάθησης, δηλαδή με έναν σταθερό εμπλουτισμό, ξεκινώντας από προγράμματα τριών-τεσσάρων εντολών να φθάσει στις τριάντα-σαράντα εντολές, δεν θα φοβηθεί την Assembly. Από το να την κατανοήσει στα βασικά της μέχρι να γίνει guru, απέχουν πολλές δεκαετίες,  ('ή για ελάχιστα άτομα, ίσως μόνο τρία με πέντε χρόνια). Αλλά αφενός θα κερδίσει ο μαθητής γιατί θα συνδέσει το υλικό (PC ή ό,τι άλλο)  με τη πραγματική γλώσσα που τρέχει εσωτερικά, και αφετέρου θα κερδίσει η πολιτεία αφού θα βρει εκείνα τα ελάχιστα άτομα που θα έχουν ταλέντο, και θα μείνουν σε αυτό.

Προσωπικά είμαι υπέρ του να βρίσκονται τα ταλέντα στην αρχή, και να προωθούνται. Μόνο με τέτοια άτομα θα ξεχωρίσουμε όλοι εμείς σαν χώρα. Ενώ τα περισσότερα άτομα απλά αναπαράγουν τα καθημερινά, προσθέτοντας εργατοώρες υπηρεσιών και παραγωγής αγαθών!

Για να γυρίσουμε στο φίλο λοιπόν που ρωτά για την c++. Η c++ είναι εργαλείο δύσκολο, αλλά αν κάποιος αρχίσει να το μαθαίνει σε μικρές απλές δόσεις, χωρίς διαλείμματα, θα το μάθει καλά. Καλό είναι να ξεκινήσει με αντιγραφές, να αντιγράφει μικρά προγράμματα, και να προσπαθεί να τα "χαλάσει" για να δει τι συμβαίνει.

Στο rosettacode.org μπορεί να βρει κανείς για την C++ πολλά προγράμματα (τα οποία έχει και σε άλλες γλώσσες όπως Python).

http://www.rosettacode.org/wiki/Category:C%2B%2B

για παράδειγμα το "πρόγραμμα" Α+Β δηλαδή η άθροιση δυο μεταβλητών σε όλες τις γλώσσες που περιέχονται στο rosettacode.org

http://www.rosettacode.org/wiki/A%2BB

Από την μεριά μου το έχω εξαντλήσει το θέμα (δεν γράφω μόνο για τον OP αλλά και για καθένα που διαβάζει εδώ).

 

Χωρίς απαραιτήτως να συμφωνώ με όλα τα bullets σου για την περίπτωση του αμούστακου φίλου μας που έθεσε το ερώτημα, ανέπτυξες μια πολύ λογική και δυνατή επιχειρηματολογία η οποία σίγουρα είναι από τις πιο χρήσιμες απόψεις γενικότερα στο Forum κι ας μην αφορά αμιγώς τον τίτλο του αρχικου ερωτήματος.

+1 από εμένα για να πάρει 1η θέση.

Επεξ/σία από The King
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

μην ξεκινησεις να μαθεις μια γτλωσσα που θες. εγω θα σου προτεινα να ξεκινησεις απο την c .

ποσταρες ενας ποιο πανω λινκ απο το youtube  του ψουνη παρε το λινκ απο την σελιδα του που τα εχει οργανωμενα καλυτερα http://www.psounis.gr/πλη10/πλη10-ενότητα-3-η-γλώσσα-προγραμματισμο/

κατα δευτερον η καλυτερη γλωσσα για να ξεκινησεις με πορογραμματισμο και αν καταλαβεις την  λογικη ειναι η C. οσο περιεργο και ανα κουγεται  για μερικους. ειναι αυστηρη γλωσσα  και θα εχει στο ιντερνετ πολυ υλικο να ψαξεις για αρχη.

απο εκει και περα  μπορεις να πας σε οποιαδηποτε γλωσσα

Και η Pyrhon  μπορει να ειναι ευκολη για αρχη αλλα δεν θα προτεινα να ξεκινησεις απο εεκι διοτι  για παραδειγμα  δεν δηλωνεις τι ειναι η καθε μεταβλητη και αμα δνε εχεις καποια εμπειρια μπορεις να χαθεις. θα βλεπεις πχ μεταβλητη-τελεια- κατι αλλο και θα λες τι ειναι αυτο. και επειδη ειναι γλωσσα υψηλου επιπεδου προσφερει πολλα ετοιμα πραγματα και καλο θα ηταν αυτα τα ετοιμα να κατσεις να τα βρεις μονο σου. πχ πως βρισκεις μεγιστο σε εναν πινακα

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

Δημοσ. (επεξεργασμένο)
Στις 25/6/2018 στις 12:17 ΠΜ, solarpower είπε

...

Αυτό με τη Mips μυρίζει ΤΕΙ; Και καλά μαθαίνει κανείς RISC Instruction set; Τι κακό έχει η x86 Assembly;

 

Spoiler

Γίνεται ένας χαμούλης με τα CISC. Είναι σα να προτείνεις σε έναν αρχάριο να ξεκινήσει προγραμματισμό με Assembly. Oh wait..

Να θυμήσω επίσης πως ARM => RISC.
Επίσης υπάρχει και το κίνημα του Open Hardware, βλ. OpenRISC, RISC-V.

Και για να γίνω και σχετικός, θα συμφωνήσω με @imitheos και λοιπούς για procedural πρώτη γλώσσα προγραμματισμού.
Ψηφίζω Python για το γεγονός ότι είναι η γλώσσα με πολύ απλό συντακτικό και ευκολοχώνευτη.

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

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...