Czyste WinApi w C++ czy C# i .Net ?

0

Witam. Chciałbym żebyście pomogli mi wybrać, ponieważ te pytanie dręczy mnie już od paru tygodni :(

Edit: Tzn. w czym lepiej tworzyć aplikacje dla Windows

0

Z czystym WINAPI można się pochlastać. Znacznie łatwiej sobie wkładać komponenty na formatkę niż pisać mega trudny kod. Musisz też pamiętać że C# nie będzie kompatybilny ze starszymi Windami.

0

zależy jakie te aplikacje mają być

0
crayze napisał(a)

zależy jakie te aplikacje mają być

Okienkowe dla Windows

0
Ovox napisał(a)

Okienkowe dla Windows

No dobra, ale to też zależy co one mają robić?
Nie możesz uogólniać. To w czym będziesz pisać jest uzależnione od bardzo wielu czynników.

0

Jak na razie to jakieś proste aplikację, ponieważ nie jestem tak zaawansowany żeby napisać Bóg wie co

0

Chcesz potestowac i sie nie zrazic to .net. WinAPI potrafi odrzucic na 100km, zwlaszcza jesli jestes poczatkujacy.

0

Jak na razie to cały czas pisze w WinApi dlatego nie wiem czy robię błąd

0

IMHO robisz :)

0
Liseeeek napisał(a)

IMHO robisz :)

Sorki ale co znaczy IMHO ?

0

IMHO = Moim skromnym zdaniem
OVOX -> use gooogle :)

0

IMHO = In my humble opinion = Moim skromnym zdaniem.

A moim skromnym zdaniem to istnieje możliwość, że WinAPI będzie przeżytkiem w przeciągu następnego wydania - dwóch wydań systemu Windows. .NET w obecnych planach Microsoftu wydaje się być bardziej przyszłościowy.

Jest łatwiejszy, ale wymaga zrozumienia (przynajmniej częściowego) obiektów, klas i wszystkich tych zależności.

0

winapi stalo sie przezytkiem w momencie wypuszczenia .net 2.0 i porzadnego c++/cli.. w tej chwili mamy .net3.5 i WPF/WCF/etc wiec pisanie w zywym winapi mozna sobie calkiem odpuscic

  • chyyba zeee masz zamiar pisac aplikacje na windows na sprzet ktory jest bardzo slaby (ram, proc, graf), wtedy wpf/wcf/etc odpada Od razu
0

jeśli zależy ci na wydajności programów winapi będzie lepszym rozwiązaniem...
ale dla zwykłych programów "pulpitowych", które sobie mają jakieś okienka(najwyżej pare okienek) C# będzie wygodniejszy...

0

ale bajer w .NET jest taki, że gdzie będzie .NET tam program ruszy, a WinAPI to na Windows tylko ( nie biorąc pod uwagę emulacji itp ), a jeszcze mnogość .NET w ofertach pracy też może wpłynąć na decyzję =]

0

Hmm... Jeszcze ja się wtrącę,
W WinXP i wcześniejszych odmianach tego systemu, głównym API jest Win32API, a .NET jest tylko platformą, którą trzeba doinstalować. Pisząc aplikację dla Win32 używany kodu natywnego, dla .NET pośredniego (nie wiem czy nie pomyliłem).

Nie wiem jak jest w Viscie (bo nie używam (na razie)), ale słyszałem że od tego systemu wzwyż głównym API, czy jądrem systemu ma być .NET, a Win32API będzie tylko po to żeby starsze aplikacje działały.

Czy to oznacza, że niedługo chcąc napisać aplikację dla Windowsa będziemy musieli korzystać z kodowania pośredniego? Czy zatem nasze aplikacje nie będą się do końca kompilowały? Czy będzie można zapomnieć o czystym C++ i ewentualnie używać jakiegoś C++/CLI?? Hmm... dla mnie to trochę dziwne jest. To tak jakby goście z Microsoftu powiedzieli: macie Win32API, ale piszcie programy w Javie :-)

0

Samodzielnych aplikacji w WinApi juz sie nie pisze. Ale czesto WinApi sie przydaje przy jakichs bardziej zaawansowanych zastosowaniach dotyczacych integracji z systemem operacyjnym - ot chociazby hooki na przyklad.

W .NET jest wszystko co trzeba, ale niektorych naprawde niskopoziomowych rzeczy (w sensie blisko systemu operacyjnego) nie ma.

jądrem systemu ma być .NET

Jądro musi być natywne - C i asm. WinApi w Viscie jest i jest nawet kilka rozserzen w stosunku do poprzednich wersji. Zawsze .NET bedzie wyzszym poziomem, a WinApi nizszym
Zreszta Vista wcale nie ma nowego jądra, tylko rozszerzone z XP - nie bylo prawdopodobnie pisane od podstaw

ale bajer w .NET jest taki, że gdzie będzie .NET tam program ruszy, a WinAPI to na Windows

A .NET to nie tylko na Windows? I to nie na kazdym w dodatku</quote>

0

@othello: co do jadra, to nie musi byc natywne w ogolnosci, patrz Singularity. Ale w przypadku normalnych systemow jest tak jak napisales :)

0

a to Mono czy Stereo ? i na Win98 też się da zainstalować ( nie osobiście lecz znajomy po wielkim trudzie podołał temu zadaniu, ale wersja 3 już niezbyt chce właźić )

0

Oj, Panowie, ale fantystykę tu odstawiacie...

Ktos napisał(a)

A moim skromnym zdaniem to istnieje możliwość, że WinAPI będzie przeżytkiem w przeciągu następnego wydania - dwóch wydań systemu Windows. .NET w obecnych planach Microsoftu wydaje się być bardziej przyszłościowy.

Pełne wydanie systemu, nie aktualizacja ma być już tylko jedna - Windows 7. 7.x to ostatnia linia jąder z rodziny NT i Windows zarazem. Microsoft sam przyznaje jak kosztowne jest utrzymanie czegoś, co powstawało przez praktycznie dwadzieścia lat /bo i tak stare komponenty jeszcze występują/. Zresztą, skalowalność na nowoczesnych platformach sprzętowych i nadchodzących /jak zaprezentowany bodaj w listopadzie 80-rdzeniowy procesor Intela/ i jądro pisane w C po prostu się wykluczają.

gosc_z_pytaniem napisał(a)

Hmm... Jeszcze ja się wtrącę,
W WinXP i wcześniejszych odmianach tego systemu, głównym API jest Win32API, a .NET jest tylko platformą, którą trzeba doinstalować. Pisząc aplikację dla Win32 używany kodu natywnego, dla .NET pośredniego (nie wiem czy nie pomyliłem).

Nie wiem jak jest w Viscie (bo nie używam (na razie)), ale słyszałem że od tego systemu wzwyż głównym API, czy jądrem systemu ma być .NET, a Win32API będzie tylko po to żeby starsze aplikacje działały.

WinAPI to było ale w 3.11 i 9x - systemy z rodziny NT korzystają z Native API, WinAPI to w wielu miejscach tylko wrapper dla kompatybilności. XP to oczywiście NT /dokładnie 5.1 i 5.2 jako 64bit - jądro od 2k3 z drobnymi zmianami/, tak samo Vista /6.0/. Całe to API funkcjonuje w oparciu o unicode, bodaj jedyny wyjątek stanowi obsługa formatu PE.
W .NET efektem kompilacji jest zwykle kod pośredni, przy /pierwszym/ uruchomieniu kompilowany do kodu natywnego.

othello napisał(a)

Jądro musi być natywne - C i asm. [...] Zawsze .NET bedzie wyzszym poziomem, a WinApi nizszym
Zreszta Vista wcale nie ma nowego jądra, tylko rozszerzone z XP - nie bylo prawdopodobnie pisane od podstaw

I znowu bzdura... Jądro musi być natywne, owszem - nikt jednak nie mówi o C i asm. Już kilkadziesiąt lat temu były systemy napisane w całości w HLL, /że systemy bazujące na Lispie wspomnę i to na normalnym sprzęcie, nie dedykowanym/ jedynie takie rzeczy jak alokatory były robione na niższym poziomie, wyłącznie samo minimum pozwalające na tworzenie obiektów i najbardziej podstawową komunikację ze sprzętem. Liczy się tylko to aby jądro było w swoich podstawach natywne, w jakim języku będzie to napisane - to już inna sprawa.
Co do Visty i XP... to tak jak Windows 3.11 i 9x, jądra mają te same podstawy, API mają względnie kompatybilne ale trudno je porównywać. 6.0 to nie 5.3, to nie chwyt marketingowy, jądra się sporo różnią. WinAPI zniknie, zostanie zastąpione przez .NET, co przynajmniej zapewni systemom minimalną skalowalność i bezpieczęństwo bez narzutu ciągłych, wielokrotnych sprawdzeń wszystkiego.

johny_bravo napisał(a)

@othello: co do jadra, to nie musi byc natywne w ogolnosci, patrz Singularity. Ale w przypadku normalnych systemow jest tak jak napisales :)

I jeszcze raz... Singularity to normalne jądro, na jego bazie powstaje Midori. Tak, to jądro jest natywne - do jego kompilacji używany jest natywny kompilator C#, Bartok. Jasne, wyższe rzeczy mogą być pośrednie ale niższe klamoty przez Bartoka idą.

Swoją drogą Microsoft stworzył F# i bardzo interesuje się Haskellem, zdają sobie sprawę, że przyszłość należy do programowania funkcyjnego - mało abstrakcyjne programowanie imperatywne ma spore ograniczenia jeżeli chodzi o skalowalność chociażby.

0

A co powiecie na Jave ?

0
Ovox napisał(a)

A co powiedzie na Jave ?

przewodnik...

0

Sorki za literówkę: Co powiecie na Jave ?

0

Java:
zalety: multi-platformowy język programowania
wady: wolniejsza niż pozostałe języki (nie ma co się równać z C++ pod względem prędkości )

0
deus napisał(a)
Ktos napisał(a)

A moim skromnym zdaniem to istnieje możliwość, że WinAPI będzie przeżytkiem w przeciągu następnego wydania - dwóch wydań systemu Windows. .NET w obecnych planach Microsoftu wydaje się być bardziej przyszłościowy.

Pełne wydanie systemu, nie aktualizacja ma być już tylko jedna - Windows 7. 7.x to ostatnia linia jąder z rodziny NT i Windows zarazem. Microsoft sam przyznaje jak kosztowne jest utrzymanie czegoś, co powstawało przez praktycznie dwadzieścia lat /bo i tak stare komponenty jeszcze występują/. Zresztą, skalowalność na nowoczesnych platformach sprzętowych i nadchodzących /jak zaprezentowany bodaj w listopadzie 80-rdzeniowy procesor Intela/ i jądro pisane w C po prostu się wykluczają.

deus, mógłbyś podać jakieś źródła tych informacji?
Słyszałem o czymś takim, że faktycznie linia Windows NT może zostać porzucona, jednak nie spodziewałem się tego w tak krótkim czasie jak już po wydaniu Windows 7. A co z jądrem MinWin? Singularity/Midori to jedna z dróg rozwoju Windows, ale są też pogłoski o nowym jądrze MinWin, bynajmniej nie napisanym w kodzie zarządzanym (o ile wiem).

0

Minęło 7 lat co powiecie teraz na ten temat?

1 użytkowników online, w tym zalogowanych: 0, gości: 1