Portál AbcLinuxu, 24. října 2025 21:46
).
Poraď mi tedy, jak můžu v integrovaném prostředí pod Windows, řekněme pod Visual C++ vyvíjet pod Qt a jak tedy budu prohánět zdrojáky preprocesoremÚplně normálně. Qt nástroje se totiž do Visual Studia integrují (objeví se tlačítka na liště, položky v menu atd.) a při kompilaci zdrojáku se prostě před kompilátorem zavolá preprocesor. Jedná se ovšem o komerční balík Qt pro Windows (verze 3 se pro Win ani v GPL neposkytovala, verze 4 sice ano, ale do VS se neintegruje).
Ohledne NETu - je to teda neco jineho, nez virtualni masina s relativne strojove nezavislym bytekodem a standardni sadou definovanych knihoven?No, asi tam je ještě vyžadován minimálně C#, ale nejsem si zcela jist. V případě Javy je jazyk (Java) neoddělitelnou součástí platoformy (Java). Jinak to ale je tak - virtuální mašina a standardní sada knihoven. Která ovšem (!!) neobsahuje (!!) grafické GUI, takže vlastně debatujete zcela off-topic. Nelze QT nahradit pomocí .NET. Microsoft a Mono dodávají ve svých frameworcích ještě mnoho nestandardních knihoven, jako je například grafické gui (windows forms, GTK binding) nebo ASP.NET (to je zase pro změnu jiná sada knihoven).
Ach jo. Prosim nemichej pate pres devate. a, NELZE srovnavat BitKeeper a Qt. BitKeeper NIKDY nebyl open source, natoz GPL. Od pouzivani BK se odstoupilo pote, co autor BK hrozne rval, ze se nekdo (autor Samby) snazil napsat GPL BK klientBK BOL open source, akurát nikdy nebol free softvér. BK prestal byť open-source kvôli dvom konkrétnym udalostiam. Podľa pôvodnej zmluvy mal BK logovať metadata na verejný server s tým, že budú prístupné každému. A tí, čo vyvíjajú closed-source produkty, resp. im to vadí nech si ho kúpia. Lenže kým to bol open source, tak to nebol problém zakomentovať (a robilo to tak príliš veľa ľudí). Druhým problém bolo kopírovanie niektorých fn do podobných free nástrojov. Autori sa vyjadrili, že nie sú proti free konkurencii, ale nech nevykrádajú ich kód. A pár mesiacov na to sa stal z BK closed-source.
To obvykle vyúsťuje v používání GTK+, což je podle mého názoru hůře použitelná a pomalejší knihovna - má však licenční výhodu.Nicméně GTK+ je IMHO přijímána lidmi upřednostňujicími Qt/KDE kladněji, než je tomu naopak, takže je dobře, že to tak je.
)
Nicmene - ano, priklad Nessus je idealni. Predstav si, ze by autor Nessusu mel integrovano GUI v Qt. Co by nastalo v pripade, ze chce uzavrit kod (protoze potrebuje ziskat vic penez prodejem komerni licence) - proste by si koupil jednorazove za 1420 az 5260 Euro (dle edice a poctu podporavnych OS) licenci Qt a klidne by projekt uzavrel.
)
Jenomže autor Nessusu neuzavřel kód proto, že by na něm vydělával. On ho dokonce dál jako program poskytuje zdarma. Nijak na tom programu neprofituje a cena za Qt je v tomto případě dost vysoko. Upřímně řečeno zrovna u tohoto projektu, kde grafické rozhraní není to hlavní a asi bude i jednoduché by mě cena za Qt licenci vyprovokovala k tomu, že bych prostě přepsal grafické rozhraní do jiné knihovny. U složitějšího grafického rozhraní bych měl asi smůlu.
Já se prostě osobně rozhodl, že Qt využívat pro free projekty nebudu, a to jednak z důvodů pro mě nepřijatelné licence a jednak z důvodů zbytečných obstrukcí s preprocesorem na místě, kde preprocesor není vůbec potřeba. Implementace signálů a slotů se dá zvládnout v pohodě standardními prostředky jazyka C++, jak ukazuje LGPL knihovna libsig, která právě toto realizuje.
Qt knihovna bohužel vytváří spoustu problémů. Chce přechroustávat moje zdrojáky, nespolupracuje se standardními knihovnami C++, zejména s STL a zavádí si svoje pseudonáhrady za různé listy a vektory z STL knihovny. Namísto používání standardních řetězců z STL knihovny tu mám zase pseudonáhradu typu QString. Atd. Nejspíš jsem si s Qt nepadli do oka.
Ja jako vyvojar proste nemusim premyslet, zda dane knihovny na Mac OSu, Windows nebo Linuxu umi proste to, co od objektu na praci s retezci potrebuju a vsude mam jeden jediny objekt, ktery umi naprosto vse, co jsem kdy od prace s retezci potreboval (a to jsem si s nimi v PHPecku a Perlu uzil veci
))
Co se tyka signalu/slotu - jak jsem psal v jednom jinem prispevku, precti si dokumentaci Trolltechu, PROC nejdou signaly/sloty standardnimi prostredky a proc vymysleji nejaky vlastni preprocessor (je to tam fakt docela podrobne popsano - argumentaci si uz presne nepamatuju, ale opravdu mne to presvedcilo, ze ti lidi vi, co mluvi). V podstate se jedna o "late - binding" podobne Cocoa (nebo jaxe to v Mac OSu jmenuje - mozna Objective C) - proste typova kontrola se provadi az v run-time, zatimco libsig ma typovou kontrolu v compile time. Konkretni debata je na: http://doc.trolltech.com/4.0/templates.html (Why Doesn't Qt Use Templates for Signals and Slots?)
Co se tyka Nessusu - uzavreni bylo motivovano PRAVE komercionalizaci projektu: Gula said, however, that the company's new business model was based on an "increase in demand from our customers who want a fully supported, commercially licensed version of the product." - zdroj: http://software.newsforge.com/article.pl?sid=05/10/24/1821209
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.