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

Aξίζει να ασχοληθεί κανείς επαγγελματικά με τον προγραμματισμό?


tonyler

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

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

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

Επειδη δεν γνωριζω την εννοια του oop, φανταζομαι εννοεις οτι γραφουν με διαδικασιακο - a la C- τροπο τη C++... Παμε pm

 

Object Oriented Programming - Αντικειμενοστραφής Προγραμματισμός.

Στην αρχή μπορεί να σε μπερδέψει το κόνσεπτ. Για εμένα, που μαθαίνω εδώ και 8 περίπου μήνες, (και ξεκίνησα απ το 0) τους 4 πρώτους μήνες μου πήρε να καταλάβω το κόνσεπτ της αφηρημάδας (abstraction) του oop. Από όταν αντιλήφθηκα και κατανόησα τι ακριβώς παίζει, άρχισα να 'πετάω' και να προχωράω τη μάθηση μου πολύ πιο γρήγορα. Απλά πρέπει να βρεις κάποιον να στο εξηγήσει με τα κατάλληλα λόγια, γιατί αρκετές εξηγήσεις είτε είναι 'ξερές' είτε χρησιμοποιούν αχρείαστα ασυνήθιστες λέξεις και τρόπους, κάνοντας τα απλά να φαίνονται πολύπλοκα, και τα πολύπλοκα απλά.

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

Μην νομίζεις βέβαια ότι αυτοί που δουλεύουν με αντικείμενα κατανοούν το abstraction (ούτε εγώ το καταλαβαίνω...δεν κάνεις μια αναφορά εδώ;...)

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

Δεν νομίζω να είμαι ο κατάλληλος για να το επεξηγήσει.

Το να ξέρεις κάτι είναι ένα πράγμα, και η ικανότητα του να μεταβιβάζεις αυτό που ξέρεις κάτι άλλο.

Εκτός αυτού δεν έχω αρκετό χρόνο τώρα, γιατί έχω ραντεβού στο λογιστή σε λίγο και θα φύγω.

 

Θα κάνω μια φιλότιμη προσπάθεια όμως κατά το βραδάκι.

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

Συγγνώμη η M2000 δεν είναι αντικειμενοστρεφής; Είναι δυνατόν να έχεις αναπτύξει μια OO γλώσσα χωρίς να κατανοείς την έννοια του abstraction;

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

Η απλή έννοια του abstraction: κρύβω ότι δεν χρειάζεται να μάθουν οι υπόλοιποι, για να αποφύγω μπερδέματα.

 

Με απλά -μη προγραμματιστικά- λόγια: Κανονίζω να συναντηθώ με κάποιον απο το φόρουμ. Είμαστε 2 ανεξάρτητα αντικείμενα, χωρίς να γνωρίζει το ένα το άλλο.

 

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

 

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

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

το κόνσεπτ της αφηρημάδας (abstraction) του oop

 

Κάθε φορά που βλέπω "μεταφρασμένους" όρους, I cringe (γενικά το λέω, όχι για εσένα συγκεκριμένα). 

Η απλή έννοια του abstraction: κρύβω ότι δεν χρειάζεται να μάθουν οι υπόλοιποι, για να αποφύγω μπερδέματα.

 

Πολύ ωραία η απάντηση. Να ψειρίσω 2 πράγματα.

 

α) Το κρύβω δεν είναι η καλύτερη επιλογή λέξης εδώ, καθώς παραπέμπει στο encapsulation.

 

β) Το abstration έχει να κάνει με το επίπεδο του concept και του context κατά βάση. Για παράδειγμα, ένας μαθητής είναι ένα πολύπλοκο ον με πολύ ... functionality. Αν φτιάχνω μια βάση βαθμολογιών, "αφαιρώ" (όχι κρύβω) όλα τα άλλα χαρακτηριστικά του μαθητή και κρατάω μόνο αυτό που με ενδιαφέρει για την βάση - π.χ. το τι έγραψε στο τάδε μάθημα και πότε. Είναι η απλοποίηση δλδ. του υποκειμένου μέσω της αφαίρεσης των πάντων πλην αυτών που μου χρειάζονται (concept) για αυτό που θέλω να φτιάξω (context).

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

α) Το κρύβω δεν είναι η καλύτερη επιλογή λέξης εδώ, καθώς παραπέμπει στο encapsulation.

 

Και έχεις απόλυτο δίκαιο! Απλά δεν μπόρεσα να το εκφράσω διαφορετικά, μήν έλεγα να "προστατέψω"...

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

Και έχεις απόλυτο δίκαιο! Απλά δεν μπόρεσα να το εκφράσω διαφορετικά, μήν έλεγα να "προστατέψω"...

 

Νομίζω ότι η έννοια του abstraction δεν έχει να κάνει όυτε με το να "κρύβεις" η να "προστατεύεις" (το ίδιο πράγμα είναι) δεδομένα από π.χ. τους clients μιας κλάσεις. Περισσότερο έχει να κάνει με το όταν έχεις παρόμοιες λειτουργίες σε διάφορα μέρη του προγράμματος να μην υλοποιείς το ίδιο πράγμα συνέχεια αλλά να αφαιρείς/γενικεύεις τη λειτουργικότητα και να την υλοποιείς σε ένα σημείο. Από το αντίστοιχο άρθρο της Wikipedia:

 

Each significant piece of functionality in a program should be implemented in just one place in the source code. Where similar functions are carried out by distinct pieces of code, it is generally beneficial to combine them into one by abstracting out the varying parts.

 

Στον OOP αυτό μπορείς να το πετύχεις με inheritance ή aggregation.

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

Συγγνώμη η M2000 δεν είναι αντικειμενοστρεφής; Είναι δυνατόν να έχεις αναπτύξει μια OO γλώσσα χωρίς να κατανοείς την έννοια του abstraction;

Ναι! Υπάρχει όμως περίπτωση να μιλάμε για κάτι που το κατανοώ αλλά δεν το έχω ονομάσει έτσι!

Απλά πράγματα...θα πάρουμε τόσες γνώμες όσοι και αυτοί που θα απαντήσουν!

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

Κάθε φορά που βλέπω "μεταφρασμένους" όρους, I cringe (γενικά το λέω, όχι για εσένα συγκεκριμένα). 

 

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

κάτι που δυστυχώς γίνεται πολύ εκτεταμένα.

 

πχ το at "@" (στο / στη / στον) να το λένε παππάκι.

τη συστοιχία (array) πίνακα (border).

τον φάκελο (file) να τον λένε αρχείο (arhive)

το χαρτοφυλάκιο (folder) να το λένε φάκελο (file)

και το αρχείο (archive) να το λεν χαρτοφυλάκιο (folder)

 

:wacko:  :P

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

Πώς φαίνεται το Διάρθρωση για το Buffer;

Διάρθρωση μνήμης σε νοητά χωρίσματα, και με ερμηνεία όπως Ακέραιος!

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

Δεν νομίζω να είμαι ο κατάλληλος για να το επεξηγήσει.

Το να ξέρεις κάτι είναι ένα πράγμα, και η ικανότητα του να μεταβιβάζεις αυτό που ξέρεις κάτι άλλο.

Εκτός αυτού δεν έχω αρκετό χρόνο τώρα, γιατί έχω ραντεβού στο λογιστή σε λίγο και θα φύγω.

 

Θα κάνω μια φιλότιμη προσπάθεια όμως κατά το βραδάκι.

 

Το πρόβλημα με την έννοια του abstraction, είναι ότι η ίδια η έννοια της abstraction είναι abstract.

Είναι μια αφηρημένη έννοια που αφορά το πως εφαρμόζονται άλλες αφηρημένες έννοιες στη πράξη.

Άρα λοιπόν δεν είναι 1 το abstraction, αλλά πολλά.

 

 

Υπάρχει λοιπόν ένα abstraction, αυτό που δηλώνουμε μεθόδους, κλάσεις και άλλα ως abstract. Σε αυτή τη περίπτωση εννοούμε πως δηλώνουμε μόνο την ιδέα πίσω από αυτό που πάμε να δημιουργήσουμε, και όχι το ίδιο το 'υλικό' αντίτυπό του. Μια abstract μέθοδος λοιπόν δεν έχει κάποια λειτουργικότητα η ίδια, αλλά μπορούν να υλοποιηθούν μέθοδοι εξ αυτής.

 

Απ την άλλη υπάρχει και το class abstraction, όπου έχεις μια κλάση που αποτελεί τη πρότυπη ιδέα άλλων κλάσεων, και η ίδια η πρώτη κλάση δε κάνει τίποτα.

 

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

 

Έπειτα έχεις και κλάσεις που είναι μέσα σε άλλες κλάσεις, εντολές που είναι μέσα σε μεθόδους, που είναι μέσα σε υπό-κλάσεις που δηλώνονται σε άλλες κλάσεις, που και αυτές με τη σειρά τους κληρονομούν από άλλη κλάση, η οποία άλλη κλάση μπορεί να κληρονομεί είτε από abstract κλάσση ή inteface, και όλα μαζί είναι σε namespace, το οποίο μπορεί να είναι σε άλλο namespace, και το namespace μπορεί να είναι με άλλα namespaces σε ένα assembly ή να είναι απλωμένο σε πολλά assemblies...

 

Εντάξει στην αρχή όλα αυτά είναι σχεδόν σίγουρο ότι θα σε μπερδέψουν. Το ένα μες το άλλο, η ιδέα της ιδέας μιας άλλης ιδέας που είναι μέσα σε άλλη ιδέα, η οποία με τη σειρά της είναι σε άλλη ιδέα, και καθότανε και κένταγε η κόρη το μαντήλι, ντίλι ντίλι ντίλι!!!

 

 

 

:D

 

Αλλά ντάξει, άμα το ακούσεις ή διαβάσεις αρκετές φορές, και ακόμα καλύτερα από διαφορετικούς ανθρώπους, κάποια στιγμή το καταλαβαίνεις και λες "Αυτό ήταν ?"

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

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

Για το Buffer (offtopic)

 

 

Το λέω και Buffer αλλά πρέπει να βάλω και την ελληνική ονομασία

Έχω διπλό λεξιλόγιο και μάλιστα υπάρχει περίπτωση στα αγγλικά μια λέξη να χρησιμοποιείται σε ορισμένες περιπτώσεις περισσότερες φορές. Π.χ οι λέξεις Καθαρό και Clear καθαρίζουν τις μεταβλητές ή όποιες δείχνουμε όταν είναι εντολή.

Στο Buffer, το Buffer Clear alfa as byte*100 καθαρίζει την μνήμη των 100 bytes, αλλά στα ελληνικά είναι (κρατάω τη μεταβλητή ως έχει)

Διάρθρωση κενή alfa ως ψηφίο*100

αντί για ψηφίο μπορώ να δώσω

Δομή κάτι1 {

     όνομα ως ψηφίο*100

     τιμή1 ως διπλός*5

}

 

Οπότε τα Διάρθρωση και Δομή ταιριάζουν!

(δεν υπάρχει Free γίνεται αυτόματα γιατί το alfa είναι αντικείμενο, και η Free είναι στο τελείωμα)

 

 

 

 

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

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

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

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

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

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

Σύνδεση

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

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

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