C++ Vs Java
- silegav
- Venus Project Founder
- Posts: 2098
- Joined: Tue Mar 09, 2004 4:03 pm
- Academic status: Alumnus/a
- Location: The Center of the World -> Piraeus
Αίσχος!!!!Και μόνο που σου πέρασε από το μυαλό επιφέρει τιμωρία!!!!jimmyD wrote:και (ντρέπομαι ) μου πέρασε από το μυαλό να χρησιμοποιήσω C++.
Κάθε μέρα για 30 μέρες 1000 system.out.println που θα λένε "Δεν θα ξαναγράψω σε C++" , θα τα στέλνεις στον Einherjar και θα δημοσιεύσει σε 30 μέρες αν εκπλήρωσες την τιμωρία για να ξεπλύνει την ντροπή.
Σημείωση: το for απαγορεύεται
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Εγώ παντος σε C++ θα έγραφα(μην σου πώ σε C)...τώρα μην κοιτάς που τα post που κάνω σχετίζονται με Java(την αγαπάω και αυτή δεν λέω πολύ καλή είναι).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
-
- Venus Project Founder
- Posts: 488
- Joined: Wed Apr 21, 2004 12:00 am
- Location: a world without time
ελα ρε HdKiller αν ενδιαφέρεσαι σου θυμίζω και την Fortran77( η 9Χ είναι πολύ σύγχρονη!)
ας χαλαρώσουμε λίγο , η κάθε μία στον τομέα της..
C++ για servers και αν θες ταχύτητα(δεν έχει JVM)
Java για Web Services (+ λόγω portability)
ας χαλαρώσουμε λίγο , η κάθε μία στον τομέα της..
C++ για servers και αν θες ταχύτητα(δεν έχει JVM)
Java για Web Services (+ λόγω portability)
People are never more insecure than when they become obsessed with their fears at the expense of their dreams
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
C για κάθε περίπτωση...είναι μέσα στην ζωή σου μιας και τα πάντα είναι γραμμένα σε αυτή,λειτουργικά,βάσεις,οδηγοί,... - Πλάκα
Η java έχει portability αλλά υστερεί σε δύο βασικά
1)Ταχύτητα(μεγάλο μειονέκτημα εδώ,αλλά είναι το tradeoff για το VM/portablility)
2)Μηχανισμό κληρονομικότητας(το λύνει μερικώς με τις διεπαφές, αλλά πολλαπλή κληρονομικότητα όπως η C++ δεν παρέχει).
Υπάρχει και το πρόβλημα με το low level programming το οποιο δεν είναι και οτι καλύτερο με java.
Βεβαια σε άλλες εφαρμογές τα πάει πολύ καλύτερα αλλα ας μην τα ισοπεδώνουμε όλα το μεγαλύτερο ποσοστό εφαρμογών μπορεί(έχει την δυνατότητα) να το καλύψει η C++(και μάλιστα αποδωτικά/γρήγορα).
Η java έχει portability αλλά υστερεί σε δύο βασικά
1)Ταχύτητα(μεγάλο μειονέκτημα εδώ,αλλά είναι το tradeoff για το VM/portablility)
2)Μηχανισμό κληρονομικότητας(το λύνει μερικώς με τις διεπαφές, αλλά πολλαπλή κληρονομικότητα όπως η C++ δεν παρέχει).
Υπάρχει και το πρόβλημα με το low level programming το οποιο δεν είναι και οτι καλύτερο με java.
Βεβαια σε άλλες εφαρμογές τα πάει πολύ καλύτερα αλλα ας μην τα ισοπεδώνουμε όλα το μεγαλύτερο ποσοστό εφαρμογών μπορεί(έχει την δυνατότητα) να το καλύψει η C++(και μάλιστα αποδωτικά/γρήγορα).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- Einherjar
- Venus Project Founder
- Posts: 3751
- Joined: Tue Jan 27, 2004 4:42 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Washington DC, USA
- Contact:
Δεν φταίει η c++ που τα Β+ δέντρα είναι τεράστιες @@ριές! αν δηλαδή η υλοποίηση που μας έβαλαν να κάνουμε γινόταν σε java θα έλεγες τα ίδια για την java?silegav wrote:εγω σε C++ δεν ξαναπρογραμματίζω μετά την εμπειρία που είχα με τα Β+ δέντρα!!!!
Τέλοσπάντων προσωπικά πιστεύω ότι ένα από τα πιο σημαντικά μειονεκτήματα της Java όπως είπε και ο HdkiLLer είναι η έλειψη δυνατότητας πολλαπλής κληρονομικότητας. μου έχει σπάσει αρκετές φορές τα νεύρα αυτό το πράγμα!
[Better to understand a little than to misunderstand a lot]
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Πάντος εάν έκανες αυτό που ήθελε κανονικά η εργασία binary read/write σε file και όχι text θα ήταν πιο εύκολο και πολύ πιο γρήγορο απο Java. Οχι οτι έχει μεγάλες διαφορές απλά θέλει stream και 10 objects κλπ,ενώ εκεί πέταξες μια ύπερφόρτωση του << και έγραφες κατευθείαν. Πάντος ένα είναι το μέλλον ..D! Ε vagalati ;
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- silegav
- Venus Project Founder
- Posts: 2098
- Joined: Tue Mar 09, 2004 4:03 pm
- Academic status: Alumnus/a
- Location: The Center of the World -> Piraeus
Ειλικρινά δεν ξέρω γιατί, αλλά δεν μπορώ να ξαναδώ C++ μπροστά μου και ίσως φταίει το γεγονος ότι παιδεύτηκα αρκετά σε αυτήν και στην συνέχεια έμαθα java έχοντας ήδη γνώσεις αντικειμενοστραφούς προγραμματισμού, οπότε η Java μου φάνηκε ευκολότερη.
Πάντως ας μην μου απαντήσει κάποιος γιατί έχουμε βγεί εκτός θέματος στο topic. Αν θέλετε να ανταλλάξουμε απόψεις, ανοίξτε ένα topic στον προγραμματισμό.
Πάντως ας μην μου απαντήσει κάποιος γιατί έχουμε βγεί εκτός θέματος στο topic. Αν θέλετε να ανταλλάξουμε απόψεις, ανοίξτε ένα topic στον προγραμματισμό.
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Μιάς και τώρα είμαστε off-topic περιμένω απάντηση .
Σίγουρα η java είναι πολύ καλύτερη για να ξεκινήσει κανείς σε σχέση με την C++ αλλά δεν ξέρω γιατί την έχεις πάρει έτσι στραβά και είναι τόσο καλή . Επίσης ένα ακόμη μειονέκτημα κατά την γνώμη μου πάντα με την java είναι ότι προκειμένου να φτιάξει πρότυπα(συναρτήσεων,κλάσεων κλπ) φτιάχνει generic μεθόδους στις οποίες περνάει αντικείμενα Object(που είναι υπερτάξη ολωνών). Στην C++ ο μηχανισμός των templates είναι πολύ πιο γρήγορος μιας και δεν χρειάζεται να ενεργοποιηθεί καν η κληρονομικότητα(με ότι συνεπάγεται αυτό..έλεγχος τύπων πέρασμα παραμέτρων κλπ) απλά αντικαθίσταται το εκάστοτε type(T) με τον κατάλληλο τύπο.
Σίγουρα η java είναι πολύ καλύτερη για να ξεκινήσει κανείς σε σχέση με την C++ αλλά δεν ξέρω γιατί την έχεις πάρει έτσι στραβά και είναι τόσο καλή . Επίσης ένα ακόμη μειονέκτημα κατά την γνώμη μου πάντα με την java είναι ότι προκειμένου να φτιάξει πρότυπα(συναρτήσεων,κλάσεων κλπ) φτιάχνει generic μεθόδους στις οποίες περνάει αντικείμενα Object(που είναι υπερτάξη ολωνών). Στην C++ ο μηχανισμός των templates είναι πολύ πιο γρήγορος μιας και δεν χρειάζεται να ενεργοποιηθεί καν η κληρονομικότητα(με ότι συνεπάγεται αυτό..έλεγχος τύπων πέρασμα παραμέτρων κλπ) απλά αντικαθίσταται το εκάστοτε type(T) με τον κατάλληλο τύπο.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- vagalati
- Mbyte level
- Posts: 579
- Joined: Tue Mar 16, 2004 2:46 pm
- Location: 7000 miles away from aueb
D Rulezzz! Η (αυτοαποκαλούμενη) διάδοχος της C++ σε χαιρετά: http://www.digitalmars.com/dHdkiLLeR wrote:Πάντος εάν έκανες αυτό που ήθελε κανονικά η εργασία binary read/write σε file και όχι text θα ήταν πιο εύκολο και πολύ πιο γρήγορο απο Java. Οχι οτι έχει μεγάλες διαφορές απλά θέλει stream και 10 objects κλπ,ενώ εκεί πέταξες μια ύπερφόρτωση του << και έγραφες κατευθίαν. Πάντος ένα είναι το μέλλον ..D! Ε vagalati ;
Μην αρχίσω τώρα για την Java (ο Νεκτάριος ξέρει τι θα πώ ). Ο theo_ τα έβαλε τα πράγματα στη θέση τους.
Τι περάσαμε δηλαδή; Στη Java πρέπει να κάνεις type-casting κάθε λίγο και λιγάκι και προσωπικά το βρίσκω πολύ σπαστικό!Einherjar wrote:Θυμάσαι όμως τι περάσαμε για να βγάλουμε άκρη με τα templates
Με τα templates απλά ο προγραμματιστής της generic τάξης/συνάρτησης στην αρχή δηλώνει τους γενικούς τύπους και μετά ορίζει την τάξη/συνάρτηση όπως όλες τις άλλες. Στον χρήστη της τάξης δεν είναι καν εμφανές!
Στην java κάνεις κάτι τέτοιο (Ilikia)hashmapname.get("Νεκτάριος") ενώ στην C++ mapname["Νεκτάριος"] (σαν οποιονδήποτε άλλο πίνακα δηλ.).
Εσένα ποιό σου φαίνεται πιο ωραίο;
Ni!! Ni!! Ni!!
- Einherjar
- Venus Project Founder
- Posts: 3751
- Joined: Tue Jan 27, 2004 4:42 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Washington DC, USA
- Contact:
Με τον τρόπο της java όμως μπορείς να βάλεις ό,τι object γουστάρεις μέσα χωρίς να χρειάζεται να δηλώσεις πρώτα τι θα είναι αυτό, όπως στα templatesvagalati wrote:Στην java κάνεις κάτι τέτοιο (Ilikia)hashmapname.get("Νεκτάριος") ενώ στην C++ mapname["Νεκτάριος"] (σαν οποιονδήποτε άλλο πίνακα δηλ.).
[Better to understand a little than to misunderstand a lot]
- silegav
- Venus Project Founder
- Posts: 2098
- Joined: Tue Mar 09, 2004 4:03 pm
- Academic status: Alumnus/a
- Location: The Center of the World -> Piraeus
ότι και να λες HdKiLLer εγώ θα επιμείνω ότι γι'αυτό που θέλω να κάνω εγώ η java είναι πολύ πιο βολική από την C++.
Εγώ σαν άτομο έχω την πεποίθηση ότι πλέον ο μόνος τομέας όπου ο πργραμματισμός δεν είναι υπερβολικά κορεσμένος είναι ο τομέας του web Programming...ε ρε φίλε στο web η C++ έχει ένα σωρό μ@@ες ενώ η java είναι πανεύκολη και έχει interoperability.
Αν ασχοληθώ με προγραμματισμό από μόνος μου, θα στραφώ εκεί, επομένως δεν χρειάζομαι την C++.
Εσύ είσαι ελεύθερος να προγραμματίζεις κάθε bit που περνά από το πρόγραμμα σου και να έχεις (ομολογουμένως) καλύτερο έλεγχο.(Δεν απευθύνομαι προσωπικά σε σένα, αλλά σε όσους προγραμματίζουν σε C++.Δικαίωμα σας....)
Όσο για το type casting, προτιμώ να βλέπω κάθε φορά τι τύπου είναι μια μεταβλητή και ας την ορίζω εγώ παρά να ανατρέχω συνέχεια στο αρχείο που κάποια φορά είχα φτιάξει ένα template και να ψάχνω τι έχω δηλώσει εκεί.
Εγώ σαν άτομο έχω την πεποίθηση ότι πλέον ο μόνος τομέας όπου ο πργραμματισμός δεν είναι υπερβολικά κορεσμένος είναι ο τομέας του web Programming...ε ρε φίλε στο web η C++ έχει ένα σωρό μ@@ες ενώ η java είναι πανεύκολη και έχει interoperability.
Αν ασχοληθώ με προγραμματισμό από μόνος μου, θα στραφώ εκεί, επομένως δεν χρειάζομαι την C++.
Εσύ είσαι ελεύθερος να προγραμματίζεις κάθε bit που περνά από το πρόγραμμα σου και να έχεις (ομολογουμένως) καλύτερο έλεγχο.(Δεν απευθύνομαι προσωπικά σε σένα, αλλά σε όσους προγραμματίζουν σε C++.Δικαίωμα σας....)
Όσο για το type casting, προτιμώ να βλέπω κάθε φορά τι τύπου είναι μια μεταβλητή και ας την ορίζω εγώ παρά να ανατρέχω συνέχεια στο αρχείο που κάποια φορά είχα φτιάξει ένα template και να ψάχνω τι έχω δηλώσει εκεί.
- mikem4600
- Gbyte level
- Posts: 1363
- Joined: Fri Mar 12, 2004 2:00 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: A Galaxy Far, Far Away
- Contact:
Βασικά μεταξύ Java και C++ δεν τίθεται πραγματικά ερώτημα, αν μιλάμε για general-purpose προγραμματισμό... Μιας και αναφέρθηκαν τα B+, ας δώσω μόνο ένα λόγο: είναι απλώς χαζό να χρειάζεται να θυμάσαι να κάνεις delete και να φτιαχνεις destructors όταν μπορεί να γίνει αυτόματα. Η επιστήμη προοδεύει. Ας το εκμεταλευτούμε. ;-)
Το πραγματικό ερώτημα είναι Java vs C#... (και για την ακρίβεια, J2SE 1.5+ και C# 2.0+ γιατί είναι εξίσου χαζό να χρειάζεται να κάνεις casting όταν βγάζεις πράγματα από data structures )
Το πραγματικό ερώτημα είναι Java vs C#... (και για την ακρίβεια, J2SE 1.5+ και C# 2.0+ γιατί είναι εξίσου χαζό να χρειάζεται να κάνεις casting όταν βγάζεις πράγματα από data structures )
Autocracy hates questions. Anarchy hates answers.
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Γούστα είναι αυτά...εσύ C#,εγώ C(οχι πως με τρελαίνει απλά την φέρνω σαν παράδειγμα). Σχετικά με αυτό που λες όσον αφορά την C# σίγουρα είναι κάτι παραπάνω αλλά δεν έφερε και την επανάσταση γλιτώνοντας το type casting
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
- P3
- Venus Project Founder
- Posts: 2722
- Joined: Mon Mar 22, 2004 4:12 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: !! El Paso !!
Λοιπόν παιδιά η γνώμη μου είναι πως όλοι έχουμε μάθει να χρησιμοποιούμε μια γλώσσα μέσα από κάποιο εργαλείο (Sun One Studio,Visual Studio,Jbuilder,κ.λ.π. )και ώς επί το πλήστον κρίνουμε την ευκολία ή τη δυσκολία χρήσης της εκάστοτε γλώσσας από το εργαλέιο που χρησιμοποιεί ο καθένας!
"Το δικό μου το ποίημα δεν έχει ομοιοκαταληξία.", ο υπογράφων
- vagalati
- Mbyte level
- Posts: 579
- Joined: Tue Mar 16, 2004 2:46 pm
- Location: 7000 miles away from aueb
Aυτό το κάνεις σε οποιαδήποτε γλώσσα έχει κληρονομικότητα. Ορίζεις μια abstract τάξη και όλες οι άλλες να έχουν πρόγονο αυτήν. Έτσι χώνεις ότι θες στη δομή που δέχεται instances της τάξης αυτής.Einherjar wrote:Με τον τρόπο της java όμως μπορείς να βάλεις ό,τι object γουστάρεις μέσα χωρίς να χρειάζεται να δηλώσεις πρώτα τι θα είναι αυτό, όπως στα templatesvagalati wrote:Στην java κάνεις κάτι τέτοιο (Ilikia)hashmapname.get("Νεκτάριος") ενώ στην C++ mapname["Νεκτάριος"] (σαν οποιονδήποτε άλλο πίνακα δηλ.).
Όπως είπε και ο theo_ παραπάνω η java είναι η καλύτερη επιλογή για web programming. Αυτό που μου τη δίνει, είναι όταν πασάρουν την java σαν γλώσσα γενικού σκοπού.silegav wrote:Αν ασχοληθώ με προγραμματισμό από μόνος μου, θα στραφώ εκεί, επομένως δεν χρειάζομαι την C++.
Εσύ είσαι ελεύθερος να προγραμματίζεις κάθε bit που περνά από το πρόγραμμα σου και να έχεις (ομολογουμένως) καλύτερο έλεγχο.(Δεν απευθύνομαι προσωπικά σε σένα, αλλά σε όσους προγραμματίζουν σε C++.Δικαίωμα σας....)
Ήμαρτον! Σκεφτείτε το Photoshop ή το 3DS Max με java ! Γενικά, θεωρώ πολύ ηλίθια την ιδέα να τρέχω προγράμματα σε VM (εξαιρούνται κάποιες περιπτώσεις όπως αυτό που ενέφερε ο theo_). Γιατί αγοράζω δηλ. τον υπολογιστή; Για να εξομοιώσω ένα άλλο μηχάνημα και να τρέξω τα προγράμματα στο εξομοιωμένο μηχάνημα;
Επίσης το ότι κάποιος προγραμματίζει με C++ δεν σημαίνει ότι κάνει low level πράγματα. Ίσα ίσα, που π.χ. με την υπερφόρτωση τελεστών ο κώδικας είναι πολύ ευανάγνωστος και κατανοητός.
Απλά η C++ σου δίνει και τη δυνατότητα να προγραμματίσεις μέχρι σε assembly επίπεδο.
Βλέπεις; Με το type-casting δεν βλέπεις κάθε φορά τι τύπου είναι μια μεταβλητή αλλά πρέπει να θυμάσαι για να κάνεις το ανάλογο type-casting (grrr), αλλιώς...κλάψ!silegav wrote: Όσο για το type casting, προτιμώ να βλέπω κάθε φορά τι τύπου είναι μια μεταβλητή και ας την ορίζω εγώ παρά να ανατρέχω συνέχεια στο αρχείο που κάποια φορά είχα φτιάξει ένα template και να ψάχνω τι έχω δηλώσει εκεί.
Συμφωνώ! Αλλά ξεχνάς κάτι: την ταχύτητα! Το Garbage Collection (GC) καθυστερεί την εκτέλεση και μερικές φορές προτιμάται το χειροκίνητο παρά το αυτόματο. Ως προς το ότι η C++ δεν έχει GC είναι ομολογουμένως μειονέκτημα. Πάντως η D υποστηρίζει GC και έχεις την επιλογή να το βάζεις on/off το GC όπου θέλεις εσύ ;-)!mikem4600 wrote: Είναι απλώς χαζό να χρειάζεται να θυμάσαι να κάνεις delete και να φτιαχνεις destructors όταν μπορεί να γίνει αυτόματα. Η επιστήμη προοδεύει. Ας το εκμεταλευτούμε.
Yeap!!p3 wrote: Λοιπόν παιδιά η γνώμη μου είναι πως όλοι έχουμε μάθει να χρησιμοποιούμε μια γλώσσα μέσα από κάποιο εργαλείο (Sun One Studio,Visual Studio,Jbuilder,κ.λ.π. )και ώς επί το πλήστον κρίνουμε την ευκολία ή τη δυσκολία χρήσης της εκάστοτε γλώσσας από το εργαλέιο που χρησιμοποιεί ο καθένας!
Ni!! Ni!! Ni!!
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Πές τα Χρυσόστομε!!...
Πάντος η εργασία στους μεταγλωτιστές με Java μου έχει βγάλει την παναγία κάθε φορά που καλώ την parent() θέλει casting και εάν χρειαστεί να καλέσεις δύο φορές την parent()(parent().parent()) δύο casts και εάν μετά καλέσεις και την getType() πάλι cast επειδή επιστρέφει PType...(grrr).Δεν είναι υποθετικά όλα αυτά έχεις μια μεταβλήτή τοπική σε μία μέθοδο και θέλεις να δείς σε ποιά κλάση ανήκει...node=μεταβλητή, άρα node.parent()=μέθοδος,node.parent().parent()=κλάση...o κώδικας μου έχει καταλήξει κάπως έτσι ((AClassDeclaration)((AMethodDeclaration)node.parent()).parent())...εάν το έβλεπα σε αλλουνού τον κώδικα θα το έλεγα σταντέ καγκουριά
ΥΓ:Βέβαια στο παραπάνω παράδειγμα για να είμαστε απολύτως δίκαιοι έχει βάλει και το χεράκι του το SableCC το οποίο ότι φτιάχνει σε List είναι Object...
Πάντος η εργασία στους μεταγλωτιστές με Java μου έχει βγάλει την παναγία κάθε φορά που καλώ την parent() θέλει casting και εάν χρειαστεί να καλέσεις δύο φορές την parent()(parent().parent()) δύο casts και εάν μετά καλέσεις και την getType() πάλι cast επειδή επιστρέφει PType...(grrr).Δεν είναι υποθετικά όλα αυτά έχεις μια μεταβλήτή τοπική σε μία μέθοδο και θέλεις να δείς σε ποιά κλάση ανήκει...node=μεταβλητή, άρα node.parent()=μέθοδος,node.parent().parent()=κλάση...o κώδικας μου έχει καταλήξει κάπως έτσι ((AClassDeclaration)((AMethodDeclaration)node.parent()).parent())...εάν το έβλεπα σε αλλουνού τον κώδικα θα το έλεγα σταντέ καγκουριά
ΥΓ:Βέβαια στο παραπάνω παράδειγμα για να είμαστε απολύτως δίκαιοι έχει βάλει και το χεράκι του το SableCC το οποίο ότι φτιάχνει σε List είναι Object...
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
"Μιας και αναφέρθηκαν τα B+, ας δώσω μόνο ένα λόγο: είναι απλώς χαζό να χρειάζεται να θυμάσαι να κάνεις delete και να φτιαχνεις destructors όταν μπορεί να γίνει αυτόματα. Η επιστήμη προοδεύει. Ας το εκμεταλευτούμε"
Συμφωνώ με αυτό που λες αλλά ο άλλος μπορεί να μη γουστάρει να περιμένει τη Java να κάνει αυτόματη αποκομιδή απορριμάτων αλλά να
απελευθερώνει μνήμη τη στιγμή που θέλει εκείνος.
Συμφωνώ με αυτό που λες αλλά ο άλλος μπορεί να μη γουστάρει να περιμένει τη Java να κάνει αυτόματη αποκομιδή απορριμάτων αλλά να
απελευθερώνει μνήμη τη στιγμή που θέλει εκείνος.
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Σωστά και μάλιστα το garbage collection είναι κάτι το οποίο γίνεται εξ'ολοκλήρου απο την java αυτόματα χωρίς της δυνατότητα επέμβασης(πχ σβήσε αυτό και όχι εκείνο τώρα, ή απελευθέρωσε ένα κομμάτι του χώρου που έχει δεσμευτεί κλπ). Αυτό έχει σαν αποτέλεσμα να έχεις variable χρόνο απόκρισης...συνεπώς κάτι τέτοιο θα ήταν καταστροφή σε εφαρμογές που πρέπει να έχεις fixed worst case computation time(όπως σε εφαρμογές πραγματικού χρόνου).
Μιας και αναφέρθηκε το θέμα της αυτόματης αποκομιδής γνώμη μου είναι πως το βέλτιστο είναι κάπου ανάμεσα σε C++/Java. Να υπάρχει ενεργοποιημένος δηλαδή ο μηχανισμός αυτός ώστε να μην υπάρχει memory leek όταν κάποιος βαριέται/αδνατεί/δεν μπορεί να απελευθερώσει manualy όλες τις περιστάσεις που έχει δημιουργήσει αλλά ταυτόχρονα να υπάρχει και η δυνατότητα χειροκίνητης επεξεργασίας των παραπάνω.
Και επειδή έχω ακούσει τόσα πολλά γι'αυτό το garbage collection(το κοκορεύεται ο καθένας) ας μην είμαστε και απόλυτοι. Ειδικά στην java εάν χρησιμοποιήσεις κάποια native method call τι γίνεται; πχ κάποια malloc της C; Το garbage collection θα αποδεσμεύσει μόνο τις περιοχές μνήμης που έχεουν δεσμευτεί με την οδηγία new και τα υπόλοιπα θα παραμείνουν για allocated(εντάξει το λύνεις με ένα finalize() block αλλά δεν γίνεται και πάλι αυτόματα...τι finalize(), τι deconstructor() το όνομα αλλάζει).
Μιας και αναφέρθηκε το θέμα της αυτόματης αποκομιδής γνώμη μου είναι πως το βέλτιστο είναι κάπου ανάμεσα σε C++/Java. Να υπάρχει ενεργοποιημένος δηλαδή ο μηχανισμός αυτός ώστε να μην υπάρχει memory leek όταν κάποιος βαριέται/αδνατεί/δεν μπορεί να απελευθερώσει manualy όλες τις περιστάσεις που έχει δημιουργήσει αλλά ταυτόχρονα να υπάρχει και η δυνατότητα χειροκίνητης επεξεργασίας των παραπάνω.
Και επειδή έχω ακούσει τόσα πολλά γι'αυτό το garbage collection(το κοκορεύεται ο καθένας) ας μην είμαστε και απόλυτοι. Ειδικά στην java εάν χρησιμοποιήσεις κάποια native method call τι γίνεται; πχ κάποια malloc της C; Το garbage collection θα αποδεσμεύσει μόνο τις περιοχές μνήμης που έχεουν δεσμευτεί με την οδηγία new και τα υπόλοιπα θα παραμείνουν για allocated(εντάξει το λύνεις με ένα finalize() block αλλά δεν γίνεται και πάλι αυτόματα...τι finalize(), τι deconstructor() το όνομα αλλάζει).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie