C++ Vs Java

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
User avatar
jimmyD
Venus Former Team Member
Posts: 946
Joined: Wed Apr 21, 2004 6:33 pm
Academic status: MSc
Location: στην κοσμάρα μου

Post by jimmyD » Mon May 17, 2004 11:27 pm

Αγνοούσα παντελώς την ύπαρξη της κλάσης FileWriter. Μακάρι να δουλεύει έτσι γιατί σήμερα είπα πολύ κακά λόγια για τη java που συμπαθώ ιδιαίτερα και (ντρέπομαι ) μου πέρασε από το μυαλό να χρησιμοποιήσω C++.

Ντροπή και όνυδος
Since I was born I started to decay
now nothing ever ever goes my way...
Image
User avatar
silegav
Venus Project Founder
Venus Project Founder
Posts: 2098
Joined: Tue Mar 09, 2004 4:03 pm
Academic status: Alumnus/a
Location: The Center of the World -> Piraeus

Post by silegav » Mon May 17, 2004 11:37 pm

jimmyD wrote:και (ντρέπομαι ) μου πέρασε από το μυαλό να χρησιμοποιήσω C++.
Αίσχος!!!!Και μόνο που σου πέρασε από το μυαλό επιφέρει τιμωρία!!!!
Κάθε μέρα για 30 μέρες 1000 system.out.println που θα λένε "Δεν θα ξαναγράψω σε C++" , θα τα στέλνεις στον Einherjar και θα δημοσιεύσει σε 30 μέρες αν εκπλήρωσες την τιμωρία για να ξεπλύνει την ντροπή.
:-D :-D :-D

Σημείωση: το for απαγορεύεται :twisted:
alexo
Venus Former Team Member
Posts: 1305
Joined: Wed Apr 21, 2004 7:00 pm

Post by alexo » Tue May 18, 2004 12:01 am

Φαντάσου εγώ που τόλμησα να γράψω σε C++ ... :oops:
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Tue May 18, 2004 12:26 am

Εγώ παντος σε 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
theo_
Venus Project Founder
Venus Project Founder
Posts: 488
Joined: Wed Apr 21, 2004 12:00 am
Location: a world without time

Post by theo_ » Tue May 18, 2004 12:39 am

ελα ρε HdKiller αν ενδιαφέρεσαι σου θυμίζω και την Fortran77( η 9Χ είναι πολύ σύγχρονη!)

ας χαλαρώσουμε λίγο , η κάθε μία στον τομέα της..
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
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Tue May 18, 2004 12:50 am

C για κάθε περίπτωση...είναι μέσα στην ζωή σου μιας και τα πάντα είναι γραμμένα σε αυτή,λειτουργικά,βάσεις,οδηγοί,... :-D - Πλάκα

Η 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
User avatar
silegav
Venus Project Founder
Venus Project Founder
Posts: 2098
Joined: Tue Mar 09, 2004 4:03 pm
Academic status: Alumnus/a
Location: The Center of the World -> Piraeus

Post by silegav » Tue May 18, 2004 11:02 am

Εντάξει, πλάκα έκανα.Είναι σωστό το "κάθε γλώσσα στον τομέα της" αλλά πως να το κάνουμε, εγω σε C++ δεν ξαναπρογραμματίζω μετά την εμπειρία που είχα με τα Β+ δέντρα!!!! :evil:
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Tue May 18, 2004 1:10 pm

silegav wrote:εγω σε C++ δεν ξαναπρογραμματίζω μετά την εμπειρία που είχα με τα Β+ δέντρα!!!! :evil:
Δεν φταίει η c++ που τα Β+ δέντρα είναι τεράστιες @@ριές! αν δηλαδή η υλοποίηση που μας έβαλαν να κάνουμε γινόταν σε java θα έλεγες τα ίδια για την java?
Τέλοσπάντων προσωπικά πιστεύω ότι ένα από τα πιο σημαντικά μειονεκτήματα της Java όπως είπε και ο HdkiLLer είναι η έλειψη δυνατότητας πολλαπλής κληρονομικότητας. μου έχει σπάσει αρκετές φορές τα νεύρα αυτό το πράγμα!
[Better to understand a little than to misunderstand a lot]
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Tue May 18, 2004 1:24 pm

Πάντος εάν έκανες αυτό που ήθελε κανονικά η εργασία 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
User avatar
silegav
Venus Project Founder
Venus Project Founder
Posts: 2098
Joined: Tue Mar 09, 2004 4:03 pm
Academic status: Alumnus/a
Location: The Center of the World -> Piraeus

Post by silegav » Tue May 18, 2004 5:51 pm

Ειλικρινά δεν ξέρω γιατί, αλλά δεν μπορώ να ξαναδώ C++ μπροστά μου και ίσως φταίει το γεγονος ότι παιδεύτηκα αρκετά σε αυτήν και στην συνέχεια έμαθα java έχοντας ήδη γνώσεις αντικειμενοστραφούς προγραμματισμού, οπότε η Java μου φάνηκε ευκολότερη.
Πάντως ας μην μου απαντήσει κάποιος γιατί έχουμε βγεί εκτός θέματος στο topic. Αν θέλετε να ανταλλάξουμε απόψεις, ανοίξτε ένα topic στον προγραμματισμό.
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Wed May 19, 2004 2:41 am

Μιάς και τώρα είμαστε off-topic περιμένω απάντηση :).

Σίγουρα η 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
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Wed May 19, 2004 10:26 am

Θυμάσαι όμως τι περάσαμε για να βγάλουμε άκρη με τα templates :mad: Ενώ στη Java περνάς ένα object και τελείωσες!!! :-D
[Better to understand a little than to misunderstand a lot]
User avatar
vagalati
Mbyte level
Mbyte level
Posts: 579
Joined: Tue Mar 16, 2004 2:46 pm
Location: 7000 miles away from aueb

Post by vagalati » Wed May 19, 2004 12:03 pm

HdkiLLeR wrote:Πάντος εάν έκανες αυτό που ήθελε κανονικά η εργασία binary read/write σε file και όχι text θα ήταν πιο εύκολο και πολύ πιο γρήγορο απο Java. Οχι οτι έχει μεγάλες διαφορές απλά θέλει stream και 10 objects κλπ,ενώ εκεί πέταξες μια ύπερφόρτωση του << και έγραφες κατευθίαν. Πάντος ένα είναι το μέλλον ..D! Ε vagalati ; :)
D Rulezzz! Η (αυτοαποκαλούμενη) διάδοχος της C++ σε χαιρετά: http://www.digitalmars.com/d


Μην αρχίσω τώρα για την Java (ο Νεκτάριος ξέρει τι θα πώ :-D). Ο theo_ τα έβαλε τα πράγματα στη θέση τους.
Einherjar wrote:Θυμάσαι όμως τι περάσαμε για να βγάλουμε άκρη με τα templates
Τι περάσαμε δηλαδή; Στη Java πρέπει να κάνεις type-casting κάθε λίγο και λιγάκι και προσωπικά το βρίσκω πολύ σπαστικό!
Με τα templates απλά ο προγραμματιστής της generic τάξης/συνάρτησης στην αρχή δηλώνει τους γενικούς τύπους και μετά ορίζει την τάξη/συνάρτηση όπως όλες τις άλλες. Στον χρήστη της τάξης δεν είναι καν εμφανές!
Στην java κάνεις κάτι τέτοιο (Ilikia)hashmapname.get("Νεκτάριος") ενώ στην C++ mapname["Νεκτάριος"] (σαν οποιονδήποτε άλλο πίνακα δηλ.).
Εσένα ποιό σου φαίνεται πιο ωραίο;
Ni!! Ni!! Ni!!
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Wed May 19, 2004 6:21 pm

vagalati wrote:Στην java κάνεις κάτι τέτοιο (Ilikia)hashmapname.get("Νεκτάριος") ενώ στην C++ mapname["Νεκτάριος"] (σαν οποιονδήποτε άλλο πίνακα δηλ.).
Με τον τρόπο της java όμως μπορείς να βάλεις ό,τι object γουστάρεις μέσα χωρίς να χρειάζεται να δηλώσεις πρώτα τι θα είναι αυτό, όπως στα templates
[Better to understand a little than to misunderstand a lot]
User avatar
silegav
Venus Project Founder
Venus Project Founder
Posts: 2098
Joined: Tue Mar 09, 2004 4:03 pm
Academic status: Alumnus/a
Location: The Center of the World -> Piraeus

Post by silegav » Wed May 19, 2004 7:33 pm

ότι και να λες HdKiLLer εγώ θα επιμείνω ότι γι'αυτό που θέλω να κάνω εγώ η java είναι πολύ πιο βολική από την C++.
Εγώ σαν άτομο έχω την πεποίθηση ότι πλέον ο μόνος τομέας όπου ο πργραμματισμός δεν είναι υπερβολικά κορεσμένος είναι ο τομέας του web Programming...ε ρε φίλε στο web η C++ έχει ένα σωρό μ@@ες ενώ η java είναι πανεύκολη και έχει interoperability.
Αν ασχοληθώ με προγραμματισμό από μόνος μου, θα στραφώ εκεί, επομένως δεν χρειάζομαι την C++.
Εσύ είσαι ελεύθερος να προγραμματίζεις κάθε bit που περνά από το πρόγραμμα σου και να έχεις (ομολογουμένως) καλύτερο έλεγχο.(Δεν απευθύνομαι προσωπικά σε σένα, αλλά σε όσους προγραμματίζουν σε C++.Δικαίωμα σας....)

Όσο για το type casting, προτιμώ να βλέπω κάθε φορά τι τύπου είναι μια μεταβλητή και ας την ορίζω εγώ παρά να ανατρέχω συνέχεια στο αρχείο που κάποια φορά είχα φτιάξει ένα template και να ψάχνω τι έχω δηλώσει εκεί.
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Post by mikem4600 » Wed May 19, 2004 9:56 pm

Βασικά μεταξύ Java και C++ δεν τίθεται πραγματικά ερώτημα, αν μιλάμε για general-purpose προγραμματισμό... Μιας και αναφέρθηκαν τα B+, ας δώσω μόνο ένα λόγο: είναι απλώς χαζό να χρειάζεται να θυμάσαι να κάνεις delete και να φτιαχνεις destructors όταν μπορεί να γίνει αυτόματα. Η επιστήμη προοδεύει. Ας το εκμεταλευτούμε. ;-)

Το πραγματικό ερώτημα είναι Java vs C#... :roll: (και για την ακρίβεια, J2SE 1.5+ και C# 2.0+ γιατί είναι εξίσου χαζό να χρειάζεται να κάνεις casting όταν βγάζεις πράγματα από data structures :lol: )
Autocracy hates questions. Anarchy hates answers.
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Thu May 20, 2004 11:45 am

Γούστα είναι αυτά...εσύ C#,εγώ C(οχι πως με τρελαίνει απλά την φέρνω σαν παράδειγμα). Σχετικά με αυτό που λες όσον αφορά την C# σίγουρα είναι κάτι παραπάνω αλλά δεν έφερε και την επανάσταση γλιτώνοντας το type casting :-D
-----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
User avatar
P3
Venus Project Founder
Venus Project Founder
Posts: 2722
Joined: Mon Mar 22, 2004 4:12 pm
Academic status: Alumnus/a
Gender:
Location: !! El Paso !!

Post by P3 » Thu May 20, 2004 12:22 pm

Λοιπόν παιδιά η γνώμη μου είναι πως όλοι έχουμε μάθει να χρησιμοποιούμε μια γλώσσα μέσα από κάποιο εργαλείο (Sun One Studio,Visual Studio,Jbuilder,κ.λ.π. )και ώς επί το πλήστον κρίνουμε την ευκολία ή τη δυσκολία χρήσης της εκάστοτε γλώσσας από το εργαλέιο που χρησιμοποιεί ο καθένας!
"Το δικό μου το ποίημα δεν έχει ομοιοκαταληξία.", ο υπογράφων
User avatar
vagalati
Mbyte level
Mbyte level
Posts: 579
Joined: Tue Mar 16, 2004 2:46 pm
Location: 7000 miles away from aueb

Post by vagalati » Thu May 20, 2004 8:55 pm

Einherjar wrote:
vagalati wrote:Στην java κάνεις κάτι τέτοιο (Ilikia)hashmapname.get("Νεκτάριος") ενώ στην C++ mapname["Νεκτάριος"] (σαν οποιονδήποτε άλλο πίνακα δηλ.).
Με τον τρόπο της java όμως μπορείς να βάλεις ό,τι object γουστάρεις μέσα χωρίς να χρειάζεται να δηλώσεις πρώτα τι θα είναι αυτό, όπως στα templates
Aυτό το κάνεις σε οποιαδήποτε γλώσσα έχει κληρονομικότητα. Ορίζεις μια abstract τάξη και όλες οι άλλες να έχουν πρόγονο αυτήν. Έτσι χώνεις ότι θες στη δομή που δέχεται instances της τάξης αυτής.
silegav wrote:Αν ασχοληθώ με προγραμματισμό από μόνος μου, θα στραφώ εκεί, επομένως δεν χρειάζομαι την C++.
Εσύ είσαι ελεύθερος να προγραμματίζεις κάθε bit που περνά από το πρόγραμμα σου και να έχεις (ομολογουμένως) καλύτερο έλεγχο.(Δεν απευθύνομαι προσωπικά σε σένα, αλλά σε όσους προγραμματίζουν σε C++.Δικαίωμα σας....)
Όπως είπε και ο theo_ παραπάνω η java είναι η καλύτερη επιλογή για web programming. Αυτό που μου τη δίνει, είναι όταν πασάρουν την java σαν γλώσσα γενικού σκοπού.
Ήμαρτον! Σκεφτείτε το Photoshop ή το 3DS Max με java :-D! Γενικά, θεωρώ πολύ ηλίθια την ιδέα να τρέχω προγράμματα σε VM (εξαιρούνται κάποιες περιπτώσεις όπως αυτό που ενέφερε ο theo_). Γιατί αγοράζω δηλ. τον υπολογιστή; Για να εξομοιώσω ένα άλλο μηχάνημα και να τρέξω τα προγράμματα στο εξομοιωμένο μηχάνημα;
Επίσης το ότι κάποιος προγραμματίζει με C++ δεν σημαίνει ότι κάνει low level πράγματα. Ίσα ίσα, που π.χ. με την υπερφόρτωση τελεστών ο κώδικας είναι πολύ ευανάγνωστος και κατανοητός.
Απλά η C++ σου δίνει και τη δυνατότητα να προγραμματίσεις μέχρι σε assembly επίπεδο.
silegav wrote: Όσο για το type casting, προτιμώ να βλέπω κάθε φορά τι τύπου είναι μια μεταβλητή και ας την ορίζω εγώ παρά να ανατρέχω συνέχεια στο αρχείο που κάποια φορά είχα φτιάξει ένα template και να ψάχνω τι έχω δηλώσει εκεί.
Βλέπεις; Με το type-casting δεν βλέπεις κάθε φορά τι τύπου είναι μια μεταβλητή αλλά πρέπει να θυμάσαι για να κάνεις το ανάλογο type-casting (grrr), αλλιώς...κλάψ!
mikem4600 wrote: Είναι απλώς χαζό να χρειάζεται να θυμάσαι να κάνεις delete και να φτιαχνεις destructors όταν μπορεί να γίνει αυτόματα. Η επιστήμη προοδεύει. Ας το εκμεταλευτούμε.
Συμφωνώ! Αλλά ξεχνάς κάτι: την ταχύτητα! Το Garbage Collection (GC) καθυστερεί την εκτέλεση και μερικές φορές προτιμάται το χειροκίνητο παρά το αυτόματο. Ως προς το ότι η C++ δεν έχει GC είναι ομολογουμένως μειονέκτημα. Πάντως η D υποστηρίζει GC και έχεις την επιλογή να το βάζεις on/off το GC όπου θέλεις εσύ ;-)!
p3 wrote: Λοιπόν παιδιά η γνώμη μου είναι πως όλοι έχουμε μάθει να χρησιμοποιούμε μια γλώσσα μέσα από κάποιο εργαλείο (Sun One Studio,Visual Studio,Jbuilder,κ.λ.π. )και ώς επί το πλήστον κρίνουμε την ευκολία ή τη δυσκολία χρήσης της εκάστοτε γλώσσας από το εργαλέιο που χρησιμοποιεί ο καθένας!
Yeap!! :-D
Ni!! Ni!! Ni!!
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Thu May 20, 2004 10:26 pm

Πές τα Χρυσόστομε!!...

Πάντος η εργασία στους μεταγλωτιστές με Java μου έχει βγάλει την παναγία κάθε φορά που καλώ την parent() θέλει casting και εάν χρειαστεί να καλέσεις δύο φορές την parent()(parent().parent()) δύο casts και εάν μετά καλέσεις και την getType() πάλι cast επειδή επιστρέφει PType...(grrr).Δεν είναι υποθετικά όλα αυτά έχεις μια μεταβλήτή τοπική σε μία μέθοδο και θέλεις να δείς σε ποιά κλάση ανήκει...node=μεταβλητή, άρα node.parent()=μέθοδος,node.parent().parent()=κλάση...o κώδικας μου έχει καταλήξει κάπως έτσι ((AClassDeclaration)((AMethodDeclaration)node.parent()).parent())...εάν το έβλεπα σε αλλουνού τον κώδικα θα το έλεγα σταντέ καγκουριά :-D

ΥΓ:Βέβαια στο παραπάνω παράδειγμα για να είμαστε απολύτως δίκαιοι έχει βάλει και το χεράκι του το 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
crontab
byte level
byte level
Posts: 53
Joined: Sat May 01, 2004 7:10 pm
Contact:

Post by crontab » Thu May 20, 2004 10:50 pm

"Μιας και αναφέρθηκαν τα B+, ας δώσω μόνο ένα λόγο: είναι απλώς χαζό να χρειάζεται να θυμάσαι να κάνεις delete και να φτιαχνεις destructors όταν μπορεί να γίνει αυτόματα. Η επιστήμη προοδεύει. Ας το εκμεταλευτούμε"

Συμφωνώ με αυτό που λες αλλά ο άλλος μπορεί να μη γουστάρει να περιμένει τη Java να κάνει αυτόματη αποκομιδή απορριμάτων αλλά να
απελευθερώνει μνήμη τη στιγμή που θέλει εκείνος.
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Fri May 21, 2004 12:13 am

Σωστά και μάλιστα το 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() το όνομα αλλάζει).
-----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
Post Reply

Return to “Προγραμματισμός”