C# a kompatybilność

2

Do tej pory siedziałem w surowym C++ na gcc w linuxie ostatnio chciałem obadać tego VC zachwalanego gdyż muszę teraz coś nastrugać okienkowego pod winshita z którego nie korzystam na ogół.
Jak zachowa się aplikacja pod C# kiedy korzysta np z framworka 4.1
kiedy on jest linkowany w zasobach pliku kompilowanego w momencie jakichś specyficznych odwołań do tego frameworka?
Czy użycie wewnątrz programu podstawowych funkcji które nie są powiązane z API tego frameworka sprawi że aplikacja będzie kompatybilna na każdym OS windows?
Co to znaczy? Chodzi mi o to czy np jeśli napisz banalny program w którym będzie tylko okno z buttonami i editami na palecie to czy w momencie kiedy ktoś nie posiada w systemie zainstalowanego tego frameworka 4.1 to aplikacja się odpali? Nie mam okazji przetestować na Wirutalnej maszynie by to sprawdzić
Czy do każdej kompilacji dołączane jest pasmo zbędnych dodatków?
Czy ten CRL jako środowisko uruchomieniowe jest na każdym systemie z rodziny windows standardem?
Czy kompilacja CIL niweluje jakoś różnice pomiędzy systemami 64 bitowymi a 32, nie będzie problemów z kompatybilnością?
Pytam kogoś kto w tym siedzi i ma pewność bo ja nie jestem z reguły użytkownikiem windowsa ale teraz akurat muszę coś pod to napisać i chciałem użyć prostego rozwiązania bo nie bardzo mam czas na nauke windowsianego winAPI

3

za tego winshita to zaden szanujacy sie programista windowsa nie potraktuje cie powaznie, a ze pamietam ze sama bylam na etapie fanbojstwa to ci odpowiem ;)
po pierwsze pewnie chodzi ci o 4.5.1 a nie 4.1, aplikacja zachowa sie tak ze sie nie uruchomi jesli ja skompilujesz w nowszej wersji niz zainstalowana na systemie na ktorym chcesz ja uruchomic.
aplikacja bedzie kompatybilna z kazdym systemem windows na ktorym jest zainstalowany targetowany framework.
nie, podczas kompilacji nie sa dolaczane zbedne dodatki. srodowisko uruchomieniowe jest juz raczej standardem na kazdym systemie windows, no chyba ze mowisz o systemach z poprzedniego wieku.
tak, JIT niweluje problemy z platforma jednak rozroznienie miedzy 32/64 jest dalej wymagane i jesli masz watpliowosci to po prostu rob pod 32.
reasumujac - bierz sie za tego c# i w pare dni wyklikasz + dopiszesz co ci trzeba

1

O dziewczyna - a myślałem że dziewczyny to tylko pralki programują (żarcik :P)
A czy windowsy działają w taki sposób, że np jak ktoś nie ma tego frameworka 4.5.1 to czy dostanie stosowany komunikat, czy te dodatki Service Pack mają w swoim składzie aktualizowanego frameworka?
Przykładowo ktoś otwiera program nie mając frameworka zgodnego z moją kompilacją czy system obsłuży to zdarzenie stosownie i klarownie wyświetli komunikat i poda link referencyjny do MSDN aby sobie grzecznie pobrać?
To jest dla mnie bardzo ważne gdyż ta aplikacja będzie komercyjna dla pewnej firmy i wszystko musi być cacy

1

Chodzi mi przede wszystkim o to czy komunikaty o błędach związanych z deficytami wersji frameworków są ładnie obslużone czy to wygląda tak jak z reguły na winshitach BSOD Error - 0x000000-0000002 [Wystąpił błąd - powieś się a potem zainstaluj linuxa"]?

0

jako zapalony linuxowiec jestes zapewne za pan brat z wyszukiwarka i/lub dokumentacja, ale na wszelki wypadek - https://msdn.microsoft.com/en-us/library/vstudio/5a4x27ek(v=vs.100).aspx
do appki komercyjnej zapewne zrobisz instalator, dolaczenie frameworka jest dosyc standardowa opcja, pare klikniec :)
komunikaty bledow sa wystarczajaco jasne.

0

Nie jest mi obca dokumentacja ale po prostu nie mam za bardzo czasu szczegółowo penetrować MSDN bo mnie termin goni chciałem intelektualnego gotowca od kogoś kto już się tym od dłuższego czasu bawi.

Dziękuje za referencja miła dziewczyno, to już wszystko dla mnie jasne. Zdeklarowałaś wszystkie zmienne w moim umyśle i przypisałaś im stałe , a teraz idę działać, dzięki pozdrawiam :)

3

po pierwsze pewnie chodzi ci o 4.5.1 a nie 4.1, aplikacja zachowa sie tak ze sie nie uruchomi jesli ja skompilujesz w nowszej wersji niz zainstalowana na systemie na ktorym chcesz ja uruchomic.

Z tym się nie do końca zgodzę.
Aplikacja skompilowana pod 4.5.1 ruszy pod 4.0, pod warunkiem że nie używa żadnej biblioteki, klasy, ani metody której brakuje w 4.0.

Ustawienie "target framework" na 4.0 w Visual Studio spowoduje tylko że będziemy ograniczeni do konkretnej wersji frameworka już na etapie kompilacji, więc użycie funkcji specyficznej dla 4.5.1 spowoduje że się program nie skompiluje.
Jeśli ustawimy 4.5 czy 4.5.1 to mamy dostępne dodatkowe klasy, ale jeśli się do nich nigdzie nie odwołamy to program ruszy też na starszej wersji.

Zależność taka zachodzi między 4.0 a nowszymi, oraz - niezależnie - między 2.0, 3.0 i 3.5 (czyli program skompilowany dla 3.5 ruszy pod 2.0 o ile kod ogranicza się do elementów istniejących w 2.0)

1

Dzięki za info, choć to już przeszłość bo na PC-tach firmowych był zainstalowany 4.5.1
ale na początku właśnie dziwiło mnie to dlaczego w środowisku windowsianym cała gałąź wręcz jądro jest wymieniane na nowe, przecież z reguły
kod frameworków się urozmaica i rozszerza a nie wymienia w każdej subwersji na nowy trochę mnie to zdziwło co napisała "katelx" ale nie chciało mi się tego weryfikować bo ten VC to jednorazowa akcja dla mnie była no chyba, że jeszcze jakieś zlecenie na winde dostane
Jednak kobiety to tylko pralki programują jak widać <żarcik :P>

Ps: Zaraz modzi mnie o seksizm oskarżą jak powyżej , to forum jest bardzo specyficzny modzi tutaj zamiast zajmować pożytecznymi rzeczami to klasyfikują ludzi na różne typy, ludzi którzy piszą swój 2 czy 3 post na tym forum :P Książka po okładce. Pewnie tak samo się programowania uczycie oglądając okładki :P
A co do tego nazywania mnie fanbojem, to gruba przesada ale korzystanie z systemu który po instalacji łapie 5 trojanów z marszu nie mając antywirusa przed podłączeniem go do sieci , to chyba nie świadczy dobrze o windowsach no nie? Jakby tego było mało to nie dość że zamknięte oprogramowanie to posiada otwarte szpiegowanie użytkowników w Windows 10 więc zastanówcie się co zachwalacie, a to że wy sobie tam korzystacie z tych windowsów waszych to normalne same gotowce kopiuj wklej i zadowoleni może dlatego ten komercyjny produkt który ma mnóstwo dobrych odpowiedników na darmowych dystrybucjach tak bardzo was rajcuje..
Ale dobra każdy ma swoje zdanie.
Przecież jak ja przejrzałem tego Visuala to nawet to IDE posiada online sample, można sobie pomarzyć o czymś takim na hardcorowych dystrybucjach, ale im trudniej tym intensywniej człowiek myśli i o to chodzi,a takie programowanie w stylu kliknij i przenieś na palete wyrabia złe maniery, to jak budować cos z gotowych części to rozleniwia intelekt bo ułatwia zadania konstrukcyjne.. i potem mamy wielkich koderów hakijerów którym jak przychodzi odwołać się do czegoś niskopoziomowego to mają problem z najprostszymi rzeczami.

2

@Azarien mysle ze nie jest dobra praktyka targetowac wyzszy framework i potem kodujac uwazac zeby nie uzywac nowszych featuresow aby czasem sie u klientow z nizszym frameworkiem nie wysypalo.

@Bendnarecki nie widze tu oskarzen o seksizm, ale rzucajac takie przasne zarciki nie robisz najlepszego pierwszego wrazenia. tak samo z tym jechaniem po windowsie, skoro twoje wypowiedzi o nim to glownie hejt (na dodatek niezbyt uzasadniony) to ciezko cie traktowac powaznie :) tak samo jak opisujesz VS, drag and drop etc to dajesz swiadectwo ze nie bardzo wiesz o czym mowisz a chcesz zablysnac gadaniem 'jestem taki pro bo niskopoziomowy'

1

o jeju dziewczyno nie przesadzaj naprawdę, ale nie mów że drag drop to nie jest banalizacja składni.

Pamiętam jak z 7 lat temu korzystałem chociażby z Borlanda na windowsie, to żeby zrobić np coś ala Chat przez TCP

To się robiło to mniej więcej tak, ba i nawet nie trzeba było tego pisać bo to po przesunięciu na forme samo się generowało, ale to magia obiektowego podejścia które oczywiście jest zbanalizowane do minimum poprzez takie komponenty

TCPConnection::TCPConnection(TComponent* Owner, TForm1* TSuperForm){
    IdTCPServer1 = new TIdTCPServer(Owner);
    IdTCPServer1->Bindings->Clear();
  IdTCPServer1->Bindings->Add()->SetBinding("");

Natomiast w na surowo mniej więcej tak

WSADATA wsadata; 
struct hostent *serwer; 
SOCKET klient; 
SOCKADDR_IN adres;

WSAStartup(MAKEWORD(2,2), &wsadata); 
nasluch = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); 
int PORT = 4444; 
int adres_lengh; 
adres.sin_family = AF_INET; 
adres.sin_port = htons(PORT); 
adres.sin_addr.s_addr = htonl(INADDR_ANY); 
bind(nasluch, (struct sockaddr*)&adres, sizeof(adres)); 
listen(nasluch, 10); 
adres_lengh = sizeof(adres_klienta); 
klient = accept(nasluch, (struct sockaddr*)&adres_klienta, &adres_dlugosc);

Więc nie mów że drag and drop nie ułatwia życia, nawet nie trzeba znać struktury budowy pakietu TCP z tymi komponentami paletowymi, więc moim zdaniem wiele osób które potencjalnie korzystają z tego typu IDE a nie zaczynają od poznania biblioteki standardowej np, to zwykłe scrippt kiddes. A jeśli uważasz że jest inaczej to powodzenia w karierze programisty.

i nie chcę niczym zabłysnąć jakaś durna spekulacja.

Ja tam nie wątpię w to, że niski poziom to jego znak rozpoznawczy. ;) - somekind

Tak to prawda ale tylko w kwestii kultury.
Jestem bardzo dobrze wychowanym chamem , a nie chamem udającym kulturalnego jak np Ty ;)

ak samo z tym jechaniem po windowsie, skoro twoje wypowiedzi o nim to glownie hejt (na dodatek niezbyt uzasadniony) to ciezko cie traktowac powaznie :)
Znasz jakiegoś znanego człowieka pracującego w branży IT np specjaliste ds zabezpieczeń, który chwalił by windowsa? To system dla użytkowników przyjemny bo estetyczny, aczkolwiek pracowanie na nim to samobójstwo choćby dla tego że nie udostępnia tylu narzędzi na starcie ile potrzeba, może dla użytkownika to nie ma znaczenia, ale dla informatyka czy programisty powinno mieć wielkie.
Oczywiście jeśli rynek wymaga oprogramowania pod windowsy to trzeba na nim robić i nie mam nic przeciwko, ale mi chodzi o to że ten system nie jest stricte przeznaczony dla informatyków.
A skąd ten hejt, no z życia wzięty instaluje ostatnio win 7 dla potrzeb komercyjnych zainstalowałem NOD-a ten zaczął skanowanie a po chwili okazało się że mam trojana pomimo tego że zrobiłem formata no to przynajmniej w kwestii bezpieczeństwa jest to dno. Tym bardziej że coraz bardziej wyrafinowane oprogramowanie typu malware ostatnimi latami powstało

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