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

Προγραμματισμός σε πολλά λειτουργικά


zztop845

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

Δημοσ.

Καλό το Microsoft visual studio αλλά υποστηρίζει μόνο window. Γι΄ αυτό άρχισα να ασχολούμαι με την δωρεάν έκδοση QT της NOKIA.(Να ξεφεύγουμε όσο γίνεται από τη Microsoft ) Όμως όταν πρόσεξα την τιμή της που ξεκινάει από 2000 Ε στην περίπτωση που που θα πουλήσω τα προγράμματα άρχισα να το ξανά σκέφτομαι.

 

Η GLUT και η GLFW δεν είναι ολοκληρωμένα περιβάλλοντα GUI.

Η JAVA και η C# θέλουν να εγκαταστήσεις πρώτα την μηχανή τους και άν δεν κάνω λάθος τα εκτελέσιμα αρχεία τους είναι πολύ ποιο αργά από τις άλλες γλώσσες.

 

Τι λύσεις προτείνεται οι ποιο έμπειροι; GLUT για απλά προγράμματα και Java για ποιό σύνθετα; Υπάρχει κάποια άλλη βιβλιοθήκη φθηνή ή free και καλή;

 

Ευχαριστώ;

Δημοσ.
Καλό το Microsoft visual studio αλλά υποστηρίζει μόνο window. Γι΄ αυτό άρχισα να ασχολούμαι με την δωρεάν έκδοση QT της NOKIA.(Να ξεφεύγουμε όσο γίνεται από τη Microsoft ) Όμως όταν πρόσεξα την τιμή της που ξεκινάει από 2000 Ε στην περίπτωση που που θα πουλήσω τα προγράμματα άρχισα να το ξανά σκέφτομαι.

 

Η GLUT και η GLFW δεν είναι ολοκληρωμένα περιβάλλοντα GUI.

Η JAVA και η C# θέλουν να εγκαταστήσεις πρώτα την μηχανή τους και άν δεν κάνω λάθος τα εκτελέσιμα αρχεία τους είναι πολύ ποιο αργά από τις άλλες γλώσσες.

 

Τι λύσεις προτείνεται οι ποιο έμπειροι; GLUT για απλά προγράμματα και Java για ποιό σύνθετα; Υπάρχει κάποια άλλη βιβλιοθήκη φθηνή ή free και καλή;

 

Ευχαριστώ;

 

To Qt έχει καί LGPL άδεια, οπότε μπορεις να το χρησιμοποιησεις. Υπάρχει ένα θέμα με static linking. Επίσης, κάτι άλλο που ενδέχεται να σε απασχολήσει με το Qt (αν τελικά το επιλέξεις), είναι πως σε OS X τα προγράμματα είναι λίγο μεγάλα σε μέγεθος (συγκεκριμένα το bundle με τις απαραίτητες βιβλιοθηκες για ενα application τύπου helloworld το οποιο χρησιμοποιεί το webkit είναι περίπου 100mb ασυμπίεστο). Εκτός από το Qt, καλό σχετικά για cross-platform είναι επίσης το wxwindows και το fox toolkit.

Δημοσ.
Καλό το Microsoft visual studio αλλά υποστηρίζει μόνο window. Γι΄ αυτό άρχισα να ασχολούμαι με την δωρεάν έκδοση QT της NOKIA.(Να ξεφεύγουμε όσο γίνεται από τη Microsoft ) Όμως όταν πρόσεξα την τιμή της που ξεκινάει από 2000 Ε στην περίπτωση που που θα πουλήσω τα προγράμματα άρχισα να το ξανά σκέφτομαι.

 

Η GLUT και η GLFW δεν είναι ολοκληρωμένα περιβάλλοντα GUI.

Η JAVA και η C# θέλουν να εγκαταστήσεις πρώτα την μηχανή τους και άν δεν κάνω λάθος τα εκτελέσιμα αρχεία τους είναι πολύ ποιο αργά από τις άλλες γλώσσες.

 

Τι λύσεις προτείνεται οι ποιο έμπειροι; GLUT για απλά προγράμματα και Java για ποιό σύνθετα; Υπάρχει κάποια άλλη βιβλιοθήκη φθηνή ή free και καλή;

 

Ευχαριστώ;

 

Όπως σωστά επισήμανε ο φίλος jstark το QT μπορεί να χρησιμοποιηθεί ελεύθερα για την ανάπτυξη εφαρμογών (εμπορικών ή μη) υπό την προϋπόθεση πως το λογισμικό σου δεν θα χρησιμοποιεί static-linking δηλαδή (ας πούμε..) δεν θα συμπεριλαμβάνει στο εκτελέσιμο του "όλες τις απαραίτητες βιβλιοθήκες του QT" αλλά αντίθετα θα τις παρέχει ως ξεχωριστά αρχεία μορφής DLL (dynamic-linking). Όσον αφορά το μέγεθος των QT εφαρμογών, δυστυχώς είναι συνήθως μεγάλος λόγο αυτών των συνοδευτικών DLLs (ένα μικρό παιχνίδι που έγραψα σε QT καταλαμβάνει 4.5MB λόγο DLL dependencies).

 

Η JAVA και η C# θέλουν να εγκαταστήσεις πρώτα την μηχανή τους και άν δεν κάνω λάθος τα εκτελέσιμα αρχεία τους είναι πολύ ποιο αργά από τις άλλες γλώσσες.

 

Ναι, πρέπει να εγκαταστήσεις το ανάλογο Runtime το οποίο είναι συνήθως αρκετά megabytes. Παρ' όλα αυτά σε τυπικές εφαρμογές δεν θα συναντήσεις ιδιαίτερα προβλήματα ταχύτητας / απόδοσης μαζί τους. Ειδικά με C# ελάχιστες φορές ένιωσα ότι υπάρχει επιβάρυνση στην απόδοση του προγράμματος (και οπωσδήποτε όχι κατά την ανάπτυξη τυπικών ΒΔ εφαρμογών -μιλώ για πιο εξωτικά - ασυνήθιστα πράγματα).

 

Τι λύσεις προτείνεται;[..]

 

Προσωπικά για την ανάπτυξη native εφαρμογών σε Windows πάντα, δίχως DLLs κτλ. προτιμώ τον CodeGear C++ Builder (την C++ εκδοχή της Delphi αν την έχεις υπόψη σου). Το αρνητικό εδώ είναι ότι δεν πρόκειται για cross-platform εργαλείο και ότι πέραν των τυπικών "30 Days Trials" δεν υπάρχουν πια (τουλάχιστον ως την τελευταία φορά που κοίταξα..) free εκδόσεις (όπως πριν μερικά χρόνια) ώστε να έχεις την ευκαιρία να ασχοληθείς ανέξοδα μαζί τους.

Δημοσ.

Αν σε ενδιαφέρει ο προγραμματισμός GUI εφαρμογών και θέλεις να χρησιμοποιήσεις μια library που δεν είναι υπερφορτωμένη με πολλές λειτουργίες, μπορείς να ρίξεις μια ματια στην FLTK: http://www.fltk.org/

 

Αν τώρα θέλεις πιο ολοκληρωμένες λύσεις αρκετά γνωστές βιβλιοθήκες είναι οι Qt και wxWidgets. H Qt μου έχει αφήσει τις καλύτερες εντυπώσεις αλλά με την προυπόθεση ότι οι έννοιες κλάση, κληρονομικότητα, πολυμορφισμός, δεν αποτελούν άγνωστες λέξεις. Επίσης θα χρειαστέις κάποιο διάστημα μέχρι να κατανοήσεις τους διάφορους μηχανισμούς και τεχνολογίες της Qt όπως είναι το signal/slot, object ownership, model/view design pattern.

 

Για την wxWidgets δεν έχω άποψη διότι δεν την χρησιμοποιώ καθόλου.

Δημοσ.
Με τη qt βγάζεις portable source. Επιλέγεις μετά σε τί λειτουργικό θα βγάλεις το εκτελέσιμο αρχείο.

 

Pff Δεν μπορω να τους καταλαβω αυτους που με μανια επιμενουν σε καποιο 3το lib (toolkit)για το gui. Τι θα γινει αν γραψεις για το ιδιο προγραμμα δυο user unterface (+ os interface). Στο κατω κατω τα θετικα ενος toolkit ειναι μονο για τον προγραμματιστη(ες) σε αντιθεση με τον user που θα πρεπει να κανει εγκατασταση τοσα mb για μια απλη εφαρμογη... Φαντασου να φτιαχναν κανα browser σε qt .. Ποιος θα το κατεβαζε;

 

btw

Καλό το Microsoft visual studio αλλά υποστηρίζει μόνο window.

το vs ειναι ide, το οτι εχει template για windows εφραμογες & τεχνολογιες δε λεει οτι ειναι μονο για windows. Μπορεις να κανεις μια αναζητηση για το πως φτιαχνεις template στο vs, δεν ειναι τυχαιο που κανει τοσα φρακγα.

Δημοσ.
Pff Δεν μπορω να τους καταλαβω αυτους που με μανια επιμενουν σε καποιο 3το lib (toolkit)για το gui.

Τι θα γινει αν γραψεις για το ιδιο προγραμμα δυο user unterface (+ os interface).

 

Δεν είναι ακριβώς έτσι (φαντάζομαι).

Κερδίζουν χρόνο και κόπο να ξαναφτάχνουν το ίδιο GUI .

Δεδομένου ότι η κατασκευή GUI είναι δύσκολη και διαφέρει σημαντικά μεταξύ των λειτουργικών, το όφελος είναι σημαντικό.

Και η συντήρηση/ανάπτυξη του προγράμματος είναι πιο ενοποιημένη και εύκολη.

Το ίδιο θέμα υπήρχε κάποτε για την γραφή παιχνιδιών σε openGL αντί directX.

 

Δοθείσης της ευκαιρίας, θέλω να ρωτήσω κάτι τους επαγγελματίες.

 

Όπως σωστά επισήμανε ο φίλος jstark το QT μπορεί να χρησιμοποιηθεί ελεύθερα για την ανάπτυξη εφαρμογών (εμπορικών ή μη)

υπό την προϋπόθεση πως το λογισμικό σου δεν θα χρησιμοποιεί static-linking δηλαδή (ας πούμε..)

δεν θα συμπεριλαμβάνει στο εκτελέσιμο του "όλες τις απαραίτητες βιβλιοθήκες του QT" αλλά αντίθετα θα τις παρέχει ως ξεχωριστά αρχεία μορφής DLL (dynamic-linking).

 

1) Δεν καταλαβαίνω γιατί το static linking δεν είναι δωρεάν ενώ τα dlls είναι.

O χρήστης και με τα dlls δεν θα έχει το τελικό πρόγραμμα ;

Ή μήπως τα dlls επιβραδύνουν αισθητά και αυτό είναι το τίμημα της δωρεάν παροχής του framework ;

 

Και αν γράψεις ένα πρόγραμμα στα windows και θέλεις να το τρέξεις πχ. στο linux όπου δεν υπάρχουν dlls τι γίνεται με το dynamic linking, υπάρχει κάτι αντίστοιχο των dlls εκεί ;

 

Όσον αφορά το μέγεθος των QT εφαρμογών, δυστυχώς είναι συνήθως μεγάλος λόγο αυτών των συνοδευτικών DLLs.

 

2) Σε ένα exe με static linking το ίδιο δεν είναι τελικά το συνολικό μέγεθος ;

Αφού ότι χρειάζεται θα ενωθεί με το πρόγραμμα έτσι κι αλλιώς.

 

3) Πώς διαπιστώνεται ότι κάποιος κάνει χρήση της Qt αν το linking είναι static, μόνον από το GUI,

ή να υποθέσω ότι φαίνεται και από το εσωτερικό του κώδικα (τοποθέτηση semantics κλπ) ;

 

Ευχαριστώ εκ των προτέρων.

 

Τέλος, ως προσωπική παρατήρηση το λέω, ο Qt designer μού φαίνεται κάπως στριφνός και αργός.

Αλλά η δυνατότητα να γράφεις κάτι και να τρέχει στα μείζονα λειτουργικά με απλό recompiling είναι σπουδαία.

Λυπάμαι που δεν είχα ασχοληθεί με την Qt νωρίτερα...

Δημοσ.
Δεν είναι ακριβώς έτσι (φαντάζομαι).

Κερδίζουν χρόνο και κόπο να ξαναφτάχνουν το ίδιο GUI .

Δεδομένου ότι η κατασκευή GUI είναι δύσκολη και διαφέρει σημαντικά μεταξύ των λειτουργικών, το όφελος είναι σημαντικό.

Και η συντήρηση/ανάπτυξη του προγράμματος είναι πιο ενοποιημένη και εύκολη.

 

Ακριβώς :). Αυτό ειναι το βασικό πλεονέκτημα. Δυστυχώς όμως έχουν και αρκετά μειονεκτήματα (τα λεγόμενα cross-platform GUIs).

 

1) Δεν καταλαβαίνω γιατί το static linking δεν είναι δωρεάν ενώ τα dlls είναι.

O χρήστης και με τα dlls δεν θα έχει το τελικό πρόγραμμα ;

Ή μήπως τα dlls επιβραδύνουν αισθητά και αυτό είναι το τίμημα της δωρεάν παροχής του framework ;

 

Υπάρχει debate για το άν επιτρέπεται ή όχι το static linking. Ένας λόγος που (μαλλον) δεν επιτρέπεται, ή δεν προτείνεται, είναι πως κάποιος θα μπορούσε να έχει "πειράξει" τον source κώδικα των Qt. Σε αυτην την περιπτωση, ο client θα χρησιμοποιεί (μεσω του εκτελέσιμου) πειραγμένο Qt κώδικα και οι οποιεσδήποτε αλλαγές που τυχόν έχουν γίνει δεν ειναι ορατές.

 

Τα dlls δεν επιβραδύνουν. Ίσα ίσα, μια εφαρμογή με static linking, χρησιμοποιεί πολλαπλασια MBs μνήμης (αν τρέχει σε πολλά instances) σε αντιθεση με καποια που χρησιμοποιεί dynamic linking, της οποιας τα instances χρησιμοοποιούν τις κοινες βιβλιοθηκες που φορτώνονται μια μονο φορά.

 

Και αν γράψεις ένα πρόγραμμα στα windows και θέλεις να το τρέξεις πχ. στο linux όπου δεν υπάρχουν dlls τι γίνεται με το dynamic linking, υπάρχει κάτι αντίστοιχο των dlls εκεί ;

 

Πρέπει να κάνεις ξανά compile. Τότε θα χρησιμοποιηθούν οι βιβλιοθηκες του Qt που υπαρχουν στο λειτουργικο. Τα αντιστοιχα dlls είναι τα shared objects (.so).

 

3) Πώς διαπιστώνεται ότι κάποιος κάνει χρήση της Qt αν το linking είναι static, μόνον από το GUI,

ή να υποθέσω ότι φαίνεται και από το εσωτερικό του κώδικα (τοποθέτηση semantics κλπ) ;

 

Υπαρχουν προγράμματα που απο ενα εκτελεσιμο, μπορουν να βρουν και να τυπωσουν ποια shared libraries απαιτει για να λειτουργησει. (πχ ldd σε linux, otool σε mac os x).

Δημοσ.

Ακριβώς :). Αυτό ειναι το βασικό πλεονέκτημα. Δυστυχώς όμως έχουν και αρκετά μειονεκτήματα (τα λεγόμενα cross-platform GUIs).

 

Χμμ..σωστά τo φανταζόμουν.

Τα μειονεκτήματα υποθέτω ότι είναι πως γράφοντας στο ενδογενές λειτουργικό υπάρχει πλήρης πρόσβαση σε όλες

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

γίνονται για να ταιριάζει σε όλα. Αυτό είναι κάτι υπαρκτό και στην Qt. Πχ. επιτρέπει πρόσβαση στο win API αλλά πολύ περιορισμένα..

 

Τα dlls δεν επιβραδύνουν. Ίσα ίσα, μια εφαρμογή με static linking, χρησιμοποιεί πολλαπλασια MBs μνήμης (αν τρέχει σε πολλά instances)

σε αντιθεση με καποια που χρησιμοποιεί dynamic linking, της οποιας τα instances χρησιμοοποιούν τις κοινες βιβλιοθηκες που φορτώνονται μια μονο φορά.

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

Αν και απ' ότι θυμάμαι σε αυτό το ζήτημα υπάρχουν διάφορες προσεγγίσεις.

Υπαρχουν dll που φορτώνονται μια φορά, είτε κατά την εκκίνηση του προγράμματος

είτε μόλις χρειαστούν και δεν "ξεφορτώνονται" όταν εκτελεστούν κλπ.

Δεν ξέρω πώς συμπεροφέρεται η Qt ως προς αυτό....

 

Υπαρχουν προγράμματα που απο ενα εκτελεσιμο, μπορουν να βρουν και να τυπωσουν ποια shared libraries απαιτει για να λειτουργησει.

Ένα τέτοιο που είχα δει είναι το dependency walker. Αλλά αφορά μόνον τα dll κι όχι static linked exe.

Mάλλον ο εντοπισμός για static linked γίνεται με semantics εντός του κώδικα...

Δημοσ.
Φαντασου να φτιαχναν κανα browser σε qt .. Ποιος θα το κατεβαζε;

 

hmmm μνομίζω κάποια από τα όπερα είναι σε qt

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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