Jarosław S.

Jarosław S. Full Stack Qt/C++
Dev Since 1997

Temat: C++ <- C#

Piotr P.:
Jarosław S.:
Czy Qt działa out of the box dla programów napisanych w C# dla mono/.NET?
Nie jestem fanem ani Qt ani C#, tylko zastanawiam sie co ma większe perspektywy. Mono obsługuje od razu GTK, więc pisanie UI z Qt to chyba sztuka dla sztuki.

Wiadomo, że będe bronił Qt. Więc zapytam: co z GTK na Windowsie?

Aj. Miałem na myśli C# *i* Qt lub GTK.
Jakość tego jest nieciekawa, klasy GUI (jest tego znacznie mniej niż w Qt) nie działają tak jak pod *nixem; podam 2 przykłady:
1. modalnosc i aktywowanie okien
2. focusy

Popraw mnie jeśli się mylę. Ale to nie GTK odpowiada za focus.

Qt ukrywa niedomagania (lub inaczej mówiąć różnice) windowsowego 'managera' przed programistą. W ten sposób kod źródłowy programów może być w 100% przenośny. W GTK tego nie napisano, zresztą domyślam się dlaczego - to niebywale nudna i niewdzięczna praca napisać takie rzeczy dobrze i robić ich maintenace gdy pojawiają się takie kwiatki jak Vista czy kolejne Mac OS X-y; nieodpłatna praca nad tym raczej odpada.

<dygresja>
A przykladow jest więcej - 'nowatorskie inaczej'
skroty klawiszowe, okna dialogowe otwierania plików, przyciski... (choć niestandardowość tych ostatnich to w Windows nie jest rzecz uznawana za grzech, pamiętam jeszcze przyciski Borlanda...:) )
</dygresja>
Dla niezorientowanych, polecam odpalenie GIMP-a na Windowsie. Program widocznie traci na tym, że jest w GTK...

Albo na mizerności czegoś co się nazywa "menadżer okien" w windowsie ;)
Z drugiej strony odpalenie Open Office w Gnomie także nie należy do przyjemnych doznań.

Ano właśnie i framework OpenOffice i GTK mają te rzeczy zrobione tak, że nie czuć natywnego Look & Feel.

To powiedziawszy, nie wspomniałem jeszcze że oczywiście .NET to też nie jest natywny Look&Feel.
Piotr P.

Piotr P. Software Developer

Temat: C++ <- C#

Jarosław S.:
Popraw mnie jeśli się mylę. Ale to nie GTK odpowiada za focus.

Qt ukrywa niedomagania (lub inaczej mówiąć różnice) windowsowego 'managera' przed programistą. W ten sposób kod źródłowy programów może być w 100% przenośny. W GTK tego nie napisano, zresztą domyślam się dlaczego

A czy nie jest tak, że to GDK odpowiada za tą wasrtwę "komunikacji"?
Ja lubię w GTK to, że to jest nic więcej jak tylko prosty zbiór widgetów.
- to niebywale nudna i niewdzięczna praca napisać takie rzeczy dobrze i robić ich maintenace gdy pojawiają się takie kwiatki jak Vista czy kolejne Mac OS X-y; nieodpłatna praca nad tym raczej odpada.

Zgadza się, chociaż nie wiem czy developerzy GTK skupią sie kiedykolwiek na tym problemie...
Z drugiej strony odpalenie Open Office w Gnomie także nie należy do przyjemnych doznań.

Ano właśnie i framework OpenOffice i GTK mają te rzeczy zrobione tak, że nie czuć natywnego Look & Feel.

A co jest natywnym Look&Feel dla Qt?
To powiedziawszy, nie wspomniałem jeszcze że oczywiście .NET to też nie jest natywny Look&Feel.

Ale .NET chyba z założenia nie jest Look&Feel? Dzięki temu właśnie kod napisany w Mono/.NET można uruchomić z Look&Feel GTK.
Piotr B.

Piotr B. development engineer

Temat: C++ <- C#

Piotr Likus:
C - radzę omijać z daleka, jeśli chcesz zdrowo spać. Pointery i hardwarowe łańcuchy (bo tylko w tym języku nie zawsze łańcuch się kończy) powodują przyspieszone starzenie i drgawki.
No chyba że się programuje jakieś małe sterowniki - wtedy jest to ciekawa alternatywa dla ASM. W C siedzą tylko najbardziej zatwardziali programiści którzy jednym tchem konwertują liczby ósemkowe na mnemoniki ASM.


Do tej pory (no, do zeszłego roku) zawsze pisząc coś, co miało bezpośredni styk ze sprzętem, używałem tylko C (jakoś taka pozostałość po zamierzchłych czasach, lubię "czuć władzę").Ale... w zeszłym roku, zaczynając nowy projekt, który miał współdziałać z całą masą najróżniejszych urządzeń, postanowiłem zrobić to w C++... i wiecie co? To było wspaniałe przeżycie :) Serio mówię. Dobre oparcie w bibliotece standardowej + boost to jest po prostu miód. Fakt, że w kilku miejscach musiałem podeprzeć się starymi metodami, ciężko operujących na wskaźnikach, ale to już siła przyzwyczajenia ;) Generalnie co mnie ujęło, to fakt, że ten kod po prostu zadziałał od pierwszego uruchomienia.

A co do GUI... ogólnie widać wśród userów mylenie pojęć i utożsamianie .Net z C# :/
Do tej pory korzystałem z wxWidgets, teraz testuję sobie Qt, zobaczymy, co z tego testowania wyjdzie ;) Na razie powaliła mnie na kolana objętość katalogu Qt po zbudowaniu całości ze źródeł ;)
Michał Cichoń

Michał Cichoń Student,
Politechnika Śląska
w Gliwicach

Temat: C++ <- C#

Trudno mi zrozumieć to całe narzekanie na wskaźniki. Jeszcze dziwniejsze są stwierdzenia, że programiści się ich boją. Ich idea jest prosta aż do bólu. Tak, trzeba mieć głowę na karku i nie pisać po kilku piwach, a wszystko trzyma się kupy. :)

Z C korzysta się, kiedy trzeba.

Bdw. co to są 'hardwarowe łańcuchy'? Nie umiem tego odnieść do C. Chyba, że to było 'przesadnie o łańcuchach'.
Piotr P.

Piotr P. Software Developer

Temat: C++ <- C#

Michał Cichoń:
Trudno mi zrozumieć to całe narzekanie na wskaźniki.

Bałem się to powiedzieć. Tym bardziej na grupie C/C++ ;)

Ale chyba tym bardziej autorowi wątku polecam C# skoro programiści (nawet C++) tak krytycznie podchodzą do tematu wskaźników. A i wydajność C# niewiele mniejsza od C++.
Piotr B.

Piotr B. development engineer

Temat: C++ <- C#

Biorąc pod uwagę czas wykonania kodu, tudzież zapotrzebowanie na pamięć RAM - wskaźniki są the best i nie do pokonania :) Dlatego wciąż tak wiele algorytmów, czy meotd numerycznych, jest opartych właśnie o nie.
A co do bania się ich.... cóż, trzeba po prostu zrozumieć ich istotę i arytmetykę.
Mateusz Berezecki

Mateusz Berezecki no fluff, just stuff

Temat: C++ <- C#

Krzysztof Mierzejewski:
Czyli jaką literaturę polecacie (z własnego doświadczenia), jakie tutoriale, środowiska... Na pewno wiecie o co chodzi :) .NET ma niesamowity support, naprawdę solidne community i nie ma najmniejszego problemu ze znalezieniem potrzebnej informacji, uzyskaniem porady. Stąd moje może trochę naiwne pytanie. I proszę, nie piszcie, że google - chodzi mi o wasze zdanie i wasze doświadczenia.

Z góry wielkie dzięki.

Ja troche kontrowersyjnie ale zdecydowanie:

Olej prawie wszystkie posty powyzej tego :) Dlaczego tak?
Wiekszosc osob niedokladnie przeczytala zadane przez Ciebie pytanie i zasypala swoimi "tools of the trade" ktore niestety przy twoich pytaniach nie pomagaja.

Moim zdaniem, jesli masz zaleglosci z C++ to powinienes zapoznac sie z najnowszymi technikami pisania kodu, a dopiero pozniej wchodzic w konkretne narzedzia, zwlaszcza, ze C++ sie znacznie rozwinal przez ostatnie pare lat.

Zacznij od ksiazki Alexandrescu pt. "Modern C++ Design":
http://www.amazon.com/Modern-Design-Programming-Patter...

Nastepnie polecam zapoznanie sie z Boostem:
http://www.boost.org

a w przypadku troche wiekszej liczby na koncie
http://www.amazon.com/Template-Metaprogramming-Concept...

Jesli przebrniesz przez ten material to mysle, ze dalej bedziesz juz doskonale sam wiedzial gdzie szukac dalszych informacji.

pozdrawiam

konto usunięte

Temat: C++ <- C#

Michał Cichoń:
Trudno mi zrozumieć to całe narzekanie na wskaźniki. Jeszcze dziwniejsze są stwierdzenia, że programiści się ich boją. Ich idea jest prosta aż do bólu. Tak, trzeba mieć głowę na karku i nie pisać po kilku piwach, a wszystko trzyma się kupy. :)

Z C korzysta się, kiedy trzeba.

Bdw. co to są 'hardwarowe łańcuchy'? Nie umiem tego odnieść do C. Chyba, że to było 'przesadnie o łańcuchach'.

Ostatnio miałem do znalezienia kilka wycieków w pamięci (lista z początku była długa). Jak sobie poradziłem? Ano zacząłem po kolei usuwać wszystkie wskaźniki... Zostały tylko takie które nie mają kompletnie związku z zarządzaniem pamięci (wskazywany obiekt -musi- istnieć). Czyli boost, referencje...Piotr Likus edytował(a) ten post dnia 08.10.08 o godzinie 09:34
Piotr B.

Piotr B. development engineer

Temat: C++ <- C#

Bez obrazy, ale przez źle napisany program nie można narzekać na sam mechanizm...
Darek Ś.

Darek Ś. Senior Software
Engineer, Splunk

Temat: C++ <- C#

Piotr Likus:
[...]
Ostatnio miałem do znalezienia kilka wycieków w pamięci (lista z początku była długa). Jak sobie poradziłem? Ano zacząłem po kolei usuwać wszystkie wskaźniki... Zostały tylko takie które nie mają kompletnie związku z zarządzaniem pamięci (wskazywany obiekt -musi- istnieć). Czyli boost, referencje...

hmmmm... przeciez jest masa narzedzi (darmowych i komercyjnych), ktore wykrywanie wyciekow pamieci ograniczaja wlasciwie do ewentualnego zinstrumentowania/przebuildowania, nastepnie odpalenia testow i przegladniecia raportow. Szukanie na piechote to tak jakby kopac rowy mala lyzeczka podczas gdy mozna uzyc koparki :)

Jesli aplikacja nie jest duza to build w rodzaju "memory-leaks-checker" mozna spokojnie automatycznie budowac kazdej nocy i uruchamiac na nim wszystkie testy (lub tez jaks wybrana grupe testow jesli mamy ich bardzo duzo). W przypadku wiekszych aplikacji (gdy w gre wchodza grube miliony linii kodu) moze to byc wykonywane rzadziej, ale wazne by regularnie.

Myslalem, ze w dzisiejszych czasach wyciekami pamieci to juz tylko strasza swoje dzieci programisci Java czy C# ;)))

pozdrawiam,
DarekDarek S. edytował(a) ten post dnia 08.10.08 o godzinie 10:16

konto usunięte

Temat: C++ <- C#

Piotr Borys:
Bez obrazy, ale przez źle napisany program nie można narzekać na sam mechanizm...

Napisałeś to w taki sposób jakbyś sugerował że Ty nie popełniasz błędów... Może tak jest, w końcu są też na świecie latające jaszczurki, ja jednak wolę unikać rzeczy bugogennych.

konto usunięte

Temat: C++ <- C#

Darek S.:
Piotr Likus:
[...]
Ostatnio miałem do znalezienia kilka wycieków w pamięci (lista z początku była długa). Jak sobie poradziłem? Ano zacząłem po kolei usuwać wszystkie wskaźniki... Zostały tylko takie które nie mają kompletnie związku z zarządzaniem pamięci (wskazywany obiekt -musi- istnieć). Czyli boost, referencje...

hmmmm... przeciez jest masa narzedzi (darmowych i komercyjnych), ktore wykrywanie wyciekow pamieci ograniczaja wlasciwie do ewentualnego zinstrumentowania/przebuildowania, (ciach)

Zamiast elaboratu podaj lepiej te narzędzia. VS 2008 podaje tylko listę wycieków bez ich źródła.

Aha... tylko dobrze, żeby kosztowały mniej niż $1000...Piotr Likus edytował(a) ten post dnia 08.10.08 o godzinie 10:22

konto usunięte

Temat: C++ <- C#

Mateusz Berezecki:
Zacznij od ksiazki Alexandrescu pt. "Modern C++ Design":
http://www.amazon.com/Modern-Design-Programming-Patter...


WOW. od tego ma zaczac ??????????
Ta ksiazka to chyba na koniec :)

Jedna z trudniejszych ksiazek jakie czytalem.
Juz nie mowiac, ze czytalem ja na raty.
Jest naprawde ciezka, bardzo ciekawa ale ciezka.

konto usunięte

Temat: C++ <- C#

Mateusz Berezecki:
a w przypadku troche wiekszej liczby na koncie
http://www.amazon.com/Template-Metaprogramming-Concept...

ta ksiazka zostala tez wydana po polsku:
Jezyk C++, Metaprogramowanie za pomoca szablonow. (Helion)
Darek Ś.

Darek Ś. Senior Software
Engineer, Splunk

Temat: C++ <- C#

Piotr Likus:
[...]
Zamiast elaboratu podaj lepiej te narzędzia. VS 2008 podaje tylko listę wycieków bez ich źródła.

Aha... tylko dobrze, żeby kosztowały mniej niż $1000...

Kazdy by chcial, zeby podac wszystko na talerzu ;))) Ten temat jest tak oklepany i powszechny, ze wystarczy wrzucic do wyszukiwarki haslo w rodzaju "memory-leaks" czy podobne i dostaje sie mase informacji, roznych bibliotek i narzedzi. Trzeba tylko troche wysilku - na pewno znajdziesz cos do wlasnych zastosowan.

W programikach, ktore pisalem sobie po godzinach uzywalem frikowych narzedzi, a w pracy komercyjnych i to czesto wielokrotnie drozszych niz te 1K$ (przy czym to byly cale pakiety narzedzi, nie tylko wykrywanie memory-leaks).

Poza tym z tego co pamietam to VS podaje tez zrodlo wycieku, wiec moze po prostu nie wlaczyles jakichs opcji w konfiguracji buildu? No ale nie pamietam dobrze, dawno nie uzywalem VS do wykrywania memory-leaks.

pozdrawiam,
Darek
Piotr B.

Piotr B. development engineer

Temat: C++ <- C#

Piotr Likus:
Piotr Borys:
Bez obrazy, ale przez źle napisany program nie można narzekać na sam mechanizm...

Napisałeś to w taki sposób jakbyś sugerował że Ty nie popełniasz błędów... Może tak jest, w końcu są też na świecie latające jaszczurki, ja jednak wolę unikać rzeczy bugogennych.

Ależ nie, nie mówię, że nie robię błędów. Próbuję tylko opowiedzieć,że nazywanie wskaźników "złem" ;) jest nietrafione...
Owszem, mając do dyspozycji np. C++ z całym inwentarzem szablonów i bibliotek, tam gdzie można, można ich unikać, żeby nie narażać się na możliwość popełnienia błędu. Ale są takie miejsca, gdzie lepszym pożytkiem będzie użycie wskaźników - ale trzeba to po prostu zrobić z należytą uwagą, do tego używać odpowiednich narzędzi wspomagających.

Temat: C++ <- C#

Piotr Likus:
Darek S.:
Piotr Likus:
[...]
Ostatnio miałem do znalezienia kilka wycieków w pamięci (lista z początku była długa). Jak sobie poradziłem? Ano zacząłem po kolei usuwać wszystkie wskaźniki... Zostały tylko takie które nie mają kompletnie związku z zarządzaniem pamięci (wskazywany obiekt -musi- istnieć). Czyli boost, referencje...

hmmmm... przeciez jest masa narzedzi (darmowych i komercyjnych), ktore wykrywanie wyciekow pamieci ograniczaja wlasciwie do ewentualnego zinstrumentowania/przebuildowania, (ciach)

Zamiast elaboratu podaj lepiej te narzędzia. VS 2008 podaje tylko listę wycieków bez ich źródła.

Aha... tylko dobrze, żeby kosztowały mniej niż $1000...Piotr Likus edytował(a) ten post dnia 08.10.08 o godzinie 10:22

Dla przykladu mozesz zrobic taka mini klase:
http://mituniewicz.pl/svn/Projekty/Axia/libs/Diagnostics/
I includujesz header w kazdym/interesujacej cie bibliotece/ precompiled header zeby przeciazylo operatory 'new' oraz 'delete' i masz wlasna biblioteke do sledzenia memmory leakow. Z pewnoscia latwo ci bedzie dostosowac ja do wlasnych potrzeb i nic poza czasem nie bedzie cie to kosztowac
Szymon Kubisiak

Szymon Kubisiak Developer aplikacji
mobilnych Android

Temat: C++ <- C#

Piotr Likus:
(...) ja jednak wolę unikać rzeczy bugogennych.

Wyrzuć komputer.Szymon Kubisiak edytował(a) ten post dnia 08.10.08 o godzinie 11:02
Piotr B.

Piotr B. development engineer

Temat: C++ <- C#

Chciałoby się rzec.... po to jesteśmy programistami, żebyśmy umieli wojować z takimi rzeczami ;) Nie na darmo nie każdy umysł nadaje się na programowanie.

Ale... chyba nieco odeszliśmy od tematu wątku, hm? ;)
Jarosław S.

Jarosław S. Full Stack Qt/C++
Dev Since 1997

Temat: C++ <- C#

Piotr P.:
Jarosław S.:
Popraw mnie jeśli się mylę. Ale to nie GTK odpowiada za focus.

Qt ukrywa niedomagania (lub inaczej mówiąć różnice) windowsowego 'managera' przed programistą. W ten sposób kod źródłowy programów może być w 100% przenośny. W GTK tego nie napisano, zresztą domyślam się dlaczego

A czy nie jest tak, że to GDK odpowiada za tą wasrtwę "komunikacji"?
Ja lubię w GTK to, że to jest nic więcej jak tylko prosty zbiór widgetów.
- to niebywale nudna i niewdzięczna praca napisać takie rzeczy dobrze i robić ich maintenace gdy pojawiają się takie kwiatki jak Vista czy kolejne Mac OS X-y; nieodpłatna praca nad tym raczej odpada.

Zgadza się, chociaż nie wiem czy developerzy GTK skupią sie kiedykolwiek na tym problemie...
Z drugiej strony odpalenie Open Office w Gnomie także nie należy do przyjemnych doznań.

Ano właśnie i framework OpenOffice i GTK mają te rzeczy zrobione tak, że nie czuć natywnego Look & Feel.

A co jest natywnym Look&Feel dla Qt?

Qt pod Makiem uzywa systemowych procedur wyswietlania, menu systemowego, pod Windowsem stylu XP lub Visty (używa natywnych procedur gdzie możliwe), pod Uniksem nie ma nic natywnego (a Motif nie oddycha chyba już) wiec skórki naśladuja taki interfejs jaki aktualnie jest stosowany (włacznie z kolejnoscia przyciskow OK/Anuluj z zamianą mna GNOMowe Anuluj/OK).
To powiedziawszy, nie wspomniałem jeszcze że oczywiście .NET to też nie jest natywny Look&Feel.
>
Ale .NET chyba z założenia nie jest Look&Feel? Dzięki temu właśnie kod napisany w Mono/.NET można uruchomić z Look&Feel GTK.

Niestety programy w .NET pisane z mysla o jedynie slusznym systemie czesto zakladaja, ze ten look&feel jest jedyny sluszny. Bywa, ze trzeba wiec testowac efekt portowania na mono.
Z bardzo nietypowymi skórkami Qt tez tak moze byc, ale defaulty są tu trochę lepsze.

Wracajac do tematu samych jezykow, wspomnę że są bindingsy dla Qt w językach:

C# (http://www.qyoto.org/)

oraz Java, Python, Ada, Pascal, Perl, PHP
- http://trolltech.com/products/appdev/programming-langu...

Lua: http://repo.or.cz/w/lqt.git
i Ruby: http://rubyforge.org/projects/korundum/Jarosław S. edytował(a) ten post dnia 08.10.08 o godzinie 12:12



Wyślij zaproszenie do