C vs C++ vs Java

...χαλαρή κουβεντούλα, γενικός σχολιασμός, φιλοσοφικές συζητήσεις, meeting point / γνωριμία

Συντονιστής: konnn

Re: C vs C++ vs Java

Δημοσίευσηαπό lucinos » 04 Φεβ 2012, 09:13

Σε δικό μου πειραματισμό παλιά είχα βγάλει την C++ 50% πιο αργή από την Fortran (σε αρκετά εξειδικευμένη περίπτωση όμως)

Τώρα για τα σημερινά δεδομένα πιστεύω περισσότερο σε έναν συνδυασμό C/Java/Python χωρίς αυτό να σημαίνει ότι πετάμε τις υπόλοιπες γλώσσες, για παράδειγμα για κάποιες δουλειές η Fortran συνεχίζει να είναι καλύτερη και όχι μόνο λόγο ταχύτητας.
Για το μέλλον πιστεύω περισσότερο σε έναν συνδυασμό C/D/Cython/Python, (ίσως να έχουμε και μια ολότελα νέα γλώσσα έκπληξη) αλλά οι δύο κρίκοι τής αλυσίδας, D και Cython είναι ακόμα κάπως αδύνατοι. (αν και ήδη υπάρχουν εντυπωσιακά αποτελέσματα)
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό alkismavridis » 04 Φεβ 2012, 09:40

Πολύ ωραίο άρθρο: http://www.eecs.ucf.edu/~leavens/ComS541Fall98/hw-pages/comparing/index.html :-)
Ευχαριστούμε sokoban4ever!

Ερώτηση: μπορεί κανείς να μας δώσει τον κώδικα μιας απλής εφαρμογής GUI σε c++ για μελέτη και για σύγκριση με τον αντίστοιχο java (τον οποίο μπορώ να φτιάξω ύστερα εγώ)? ευχαριστώ!
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό medigeek » 04 Φεβ 2012, 19:11

Υπάρχει ένα project στο debian αν θέλετε να συκρίνετε ταχύτητα εκτέλεσης, ποσότητα μνήμης και κώδικας (ταχύτητα και γραμμές κώδικα )
http://shootout.alioth.debian.org/u64q/ ... &lang2=gpp

Προφανώς εξαρτάται και από τα προγράμματα που σύγκριναν, αλλά φαίνεται ότι η java χρειάζεται περισσότερη μνήμη.
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό sokoban4ever » 04 Φεβ 2012, 21:08

Παρακαλώ @alkismavridis :)
Ωραίο link επίσης του @medigeek :clap:
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό alkismavridis » 04 Φεβ 2012, 23:16

Τι ακριβώς όμως χρονομετράνε εκεί;; Πόσο κρατά μία ορισμένη διεργασία ενώ τρέχει το πρόγραμμα, ή πόσο κρατά η εκτέλεση ενός προγράμματος συνολικά (συμπεριλαμβανομένου και του χρόνου που φορτώνει);;
Γιατί αυτό σίγουρα είναι ένα σημείο που διαφοροποιεί τα πράγματα!
Η μνήμη είναι σοβαρό θέμα! Μάλλον φταίει το jvm γι αυτό.. Αλλά ευελπιστώ πως επειδή το jvm φορτώνει μία φορα (άσχετα αν η εφαρμογή είναι μικρή ή γιγάντια), σε μεγαλύτερα προγράμματα η αναλογία που παρουσιάζεται εκεί μικραίνει..
Αν συνέβαιναν εκτελέσιμο από gcj α απαιτούσε και πάλι τόση μνήμη;; Δεν υπάρχει επιλογή για gcj εκεί.. :-(
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό medigeek » 05 Φεβ 2012, 00:49

alkismavridis έγραψε:
Τι ακριβώς όμως χρονομετράνε εκεί;; Πόσο κρατά μία ορισμένη διεργασία ενώ τρέχει το πρόγραμμα, ή πόσο κρατά η εκτέλεση ενός προγράμματος συνολικά (συμπεριλαμβανομένου και του χρόνου που φορτώνει);;

Διάφορα benchmark προγράμματα, π.χ. το meteor-contest:
http://shootout.alioth.debian.org/u64q/ ... r&lang=all
http://shootout.alioth.debian.org/u64q/ ... =all#about
Στην ίδια σελίδα υπάρχει σύνδεσμος για τον κώδικα της κάθε γλώσσας
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό Star_Light » 05 Φεβ 2012, 18:22

Εγω έχω διαβάσει πως γενικά η Java ειναι σιγουρα πιο αργή απο την C λογω JVM
αλλα τα bytecode έχουν μικρό μεγεθος κατι που τα κάνει ιδανικά για μετάδοση μεσω του δικτύου.
Για αυτο το λογο και η Java ειναι πολυ δημοφιλης για web εφαρμογες.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό alkismavridis » 06 Φεβ 2012, 19:31

Η Java μπορεί να δημιουργήσει εκτελέσιμα μέσω του gcj compiler..δεν είναι υποχρεωτικό να την τρέχεις σε jvm!! Αυτό είναι κάτι που αρκετοί ξεχνούν!
Όμως όσον αφορά την ταχύτητα των εκτελέσιμων Java βλέπω ένα περίεργο πράγμα! Σε μερικές διεργασίες το εκτελέσιμο gcj είναι γρηγορότερο και σε μερικές άλλες αργότερο από το jvm.. Όταν το ψάξω περετέρω θα ποστάρω τις παρατηρήσεις μου..

:-)
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό alkismavridis » 08 Φεβ 2012, 16:59

Κάτι που έμαθα πρόσφατα: η java μπορεί να χρησιμοποιεί libraries από άλλες γλώσσες! Η μέθοδος είναι η System.load(String) και η System.loadLibrary(String).. Δεν ξέρω ακόμα πως ακριβώς χρησιμοποιούνται γιατί σήμερα το πρωτοείδα..
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Re: C vs C++ vs Java

Δημοσίευσηαπό alkismavridis » 29 Μαρ 2012, 23:24

Πάντως γενικά νοιώθω ότι από την Java λείπει ένας ΚΑΛΟΣ compiler, που να παράγει ΚΑΙ εκτελέσιμα (γιατί το virtual machine έχει τα καλά του, αλλά και τα κακά του)...
Όσον αφορά στα bytecode όπως πολύ σωστά προσέθεσε ο Star_Light έχουν πολύ καλή εφαρμογή για λόγω μεγέθους για web applets, καθώς και ότι τρέχουν παντού μόνο με ένα compile, αλλά τελικά όταν θες να τρέξεις απλά ένα πρόγραμμα στον υπολογιστή σου, τα εκτελέσιμα είναι σαφώς καλύτερα!

Όσον αφορά τον gcj, τους τελευταίους μήνες ασχολήθηκα αρκετά μαζί του, και βλέπω ότι έχει αρκετά προβλήματα και μη-αποτελεσματικά τμήματα, είναι ακόμα πιστεύω σε πολύ βρεφικό στάδιο..
Γνώσεις ⇛ Linux: Μέτριο┃ Προγραμματισμός: Java, Assembly, Fortran, μαθαίνω C/X11┃ Αγγλικά: Μέτρια
Λειτουργικό σε Η/Υ ϰ μοντέλο: Ubuntu 14.04 64-bit ┃ Τρόπος εγκατάστασης: Live USB
Προδιαγραφές ⇛ Desktop: Intel i5 2320 3.00GHz.┃ MotherBoard: Asus p8h61 -m pro
Προδιαγραφές ⇛ RAM: 4GB ┃ Τροφοδοτικό Corsair CX430

GPU: Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06) ⋮ wlan0: 0b05:1723 ASUS WL-167G v2 802.11g Adapter [Ralink RT2571W]
Οθόνη Schaub Lorenz (Tv)
alkismavridis
punkTUX
punkTUX
 
Δημοσιεύσεις: 273
Εγγραφή: 18 Μαρ 2009, 18:46
Εκτύπωση

Προηγούμενη

Επιστροφή στο Περί ανέμων