Co polecacie na początek tworzenia aplikacji okienkowych w Visual Studio?

0

Witam zamierzam zabrać się za programowanie aplikacji okienkowych w Visual Studio i tutaj moje pytanie. Co polecacie na początek? Jakie książki? Myślę że najlepiej mi będzie tworzyć aplikacje okienkowe w C++ ponieważ znam mniej więcej język C.

1

Najpierw naucz się programować w C++, a dopiero potem coś bardziej skomplikowanego. Poza tym C++ to chyba nienajlepszy wybór na programowanie aplikacji okienkowych, no chyba, że naprawdę umiesz C++.

0

To już sam się musisz zdecydować. Ale tak, czy inaczej zacznij od dobrego poznania programów konsolowych.
A ja tylko mogę zaproponować c#, c++ jest imo zbyt zagmatwane jak dla kogoś kto zaczyna.

0

c != c++ (jest tak na prawdę spora różnica)

Jeżeli okienkowo to c# powinien Ci się spodobać (też ma w nazwie C ;))

6

Jeżeli okienkowo to c# powinien Ci się spodobać (też ma w nazwie C )

COBOL też ma w nazwie C :]

0

Ok, więc skoro polecacie C# dla aplikacji okienkowych niech tak będzie ;D Jakie materiały dla początkującego w tym języku, książki polecacie??

0

MSDN wystarczy, bo przy WinForms to wielkiej filozofii nie ma ;).

Tylko po co się rzucać na okienka, kiedy się nie umie wiele w konsoli...

0

Po

  1. naucz się pisać czytelny kod - kod latwy w czytaniu jest latwy w debugowaniu i refaktoryzacji
  2. ogarnij podstawowe algorytmy (bardziej zaawansowane są nieaktualne, bo się nie skalują na wiele rdzeni)
  3. człowiek do końca życia pisze w pierwszym języku jaki poznał -> poznaj klika różnych styli (c, c++, java, c# to jedno i to samo), mam tu na uwadze: Python, Ruby, Erlang, Lisp, Smalltalk
  4. przedwczesna optymalizacja to zuooooooooo, wybór C czy C++ na naukę programowania to skakanie do pustego basenu, bo tak podobno nurkuje się najgłębiej i najszybciej.
  5. unikaj języków ze skomplikowaną składnią jak ognia - nie ogarniesz ich do konca życia (c++ np. dobrze to znać, ale bez szaleństw) - ja np nie ogarniam gdzie i jak dziala operator ++ w C i żyję (ciekawostka: w Scala nie posiada tego operatora)

przykład:
ogarnij wartosc k po wykonaniu tego kodu:
k=0;
while(k++ <= 0) { k++;}

  1. unikaj języków, które w najbliższych latach zejdą ze sceny ze względu na brak wsparcia dla programowania wielordzeniowego (multicore). szczególnie jeżeli budowa języka to utrudnia (o ile się orientuję, to wszystkie popularne stare języki mają z tym problem. jako odpowiedź na programowanie wielowątkowe pojawiło się STM (pamęć transakcyjna) w niektórych językach, C# i CLR nigdy się tego nie dorobi, więc zostaje zabawa z aktorami.
    http://softtalkblog.com/2010/05/18/microsoft-discontinues-software-transactional-memory-experiment/
2
Inquis1t0r napisał(a):

Możesz też zaopatrzyć się w http://helion.pl/ksiazki/jezyk-c-szkola-programowania-klaus-michelsen,jcshpr.htm

Może też jej nie kupować, i dużo lepiej na tym wyjść.

wirus galwaniczny napisał(a):
  1. unikaj języków, które w najbliższych latach zejdą ze sceny ze względu na brak wsparcia dla programowania wielordzeniowego (multicore). szczególnie jeżeli budowa języka to utrudnia (o ile się orientuję, to wszystkie popularne stare języki mają z tym problem. jako odpowiedź na programowanie wielowątkowe pojawiło się STM (pamęć transakcyjna) w niektórych językach, C# i CLR nigdy się tego nie dorobi, więc zostaje zabawa z aktorami.
    http://softtalkblog.com/2010/05/18/microsoft-discontinues-software-transactional-memory-experiment/

Może i "budowa języka" jest problemem, ale biblioteki skutecznie to rozwiązują, i z każdym rokiem programowanie wielordzeniowe jest coraz łatwiejsze. A druga sprawa - nie każdemu programiście jest to potrzebne.

2

@somekind
Biblioteki coraz lepsze? Człowkieku. To już powinno być zrobione 20 lat temu, a do dziś powinno dojrzewać i łatać swoje bugi. Skoro tego nie zrobiono to tylko źle świadczy o tym języku. Po ponad 50 latach C++ dorabia się lambdy, a jedyną firmą która go na siłę sprzedaje to MSFT (ludzie z komitetu standaryzacyjnego to jego pracownicy), please... Reszta firm ma go głęboko w d.
Jakbyś nie zrozumiał : C++ to w zasadzie język MS-only, jak C#.
Apple to Obj-C, a Linux to Python + C (za niedługo też Javascript). Oczywiście są projekty w C++ takie jak Qt, ale po wprowadzeniu kafli i fragmentacji windy nabierają coraz mniejszego znaczenia. Nokia prawie zabiła ten framework.
Aplikacje pisane pod MSWin w C++ są bardziej nieprzenośne od C#. Ogarniasz już teraz dlaczego MS promuje C++?.
Tak, że reasumując C + C#, z pominięciem C++ całkowicie. Takie jest moje zdanie co do zabawek MS.

0

Bystrzaku, 20 lat temu nie było C#. ;]
Nie wiem o czym teraz piszesz, ja się odniosłem jedynie do Twoich problemów z pisaniem wielowątkowym w C#. C++ mnie mało obchodzi, podobnie jak jego rzekoma promocja przez M$.

6

wirus galwaniczny: zapomniałeś jeszcze napisać że asembler to legacy i nikt go nie używa, ale jest sztucznie promowany przez Intela.

0
somekind napisał(a):

Bystrzaku, 20 lat temu nie było C#. ;]
Nie wiem o czym teraz piszesz, ja się odniosłem jedynie do Twoich problemów z pisaniem wielowątkowym w C#. C++ mnie mało obchodzi, podobnie jak jego rzekoma promocja przez M$.

A ja się odnosiłem do problemów jakie stwarza, i czego się nie da zrobić w prosty sposób.
C# to Java, a Java powstała około '92-'93, pierwsze wydanie w '95, czyli 20 lat temu, bystrzaku.
Czy muszę wspominać, że do wersji 2.0 włącznie C# był zrzynką Javy w stylu kopiuj+wklej?

0
Demonical Monk napisał(a):

wirus galwaniczny: zapomniałeś jeszcze napisać że asembler to legacy i nikt go nie używa, ale jest sztucznie promowany przez Intela.

Assembler. C to nakładka na ASM.
Pisałem jedynie, że C++ to pomyłka w ewolucji C. Nie istnieją języki mające korzenie w C++.

3

Czy muszę wspominać, że do wersji 2.0 włącznie C# był zrzynką Javy w stylu kopiuj+wklej?

Dla odmiany Bing podpieprza od Google wyniki wyszukiwania. I co z tego? Obecnie Java w porównaniu do C# ssie i dopiero powoli nadrabia różnice.

Pisałem jedynie, że C++ to pomyłka w ewolucji C. Nie istnieją języki mające korzenie w C++.

Stwierdzeniem że nic nie ma korzeni w C++ przyje***** jak dzik w sosnę. Głównym ficzerem ewolucji C -> C++ są mechanizmy programowania obiektowego, a właśnie z tego wywodzi się Java i C# ;>

0
Demonical Monk napisał(a):

Dla odmiany Bing podpieprza od Google wyniki wyszukiwania. I co z tego? Obecnie Java w porównaniu do C# ssie i dopiero powoli nadrabia różnice.

A to z tego, że w 2000 czy tam którymś nie było widać różnicy do tego stopnia, że M$ znalazł się w sądzie i przegrał.
Chcesz lepszej Javy masz Scalę lub Clojure, a przy nich C# już ssie. Java nie jest jedynie słusznym językiem na JVM.

0

Stwierdzeniem że nic nie ma korzeni w C++ przyje***** jak dzik w sosnę. Głównym ficzerem ewolucji C -> C++ są mechanizmy programowania obiektowego, a właśnie z tego wywodzi się Java i C# ;>

Sorry ale Java bardziej wzoruje się na Smalltalku niż C++. ;) Nawet działa na wirtualnej maszynie pierwotnie przeznaczonej dla Smalltalka.
Programowanie obiektowe nie powstało w czasie wydania C++ jak się co poniektórym może wydawać. ;)

1

Chcesz lepszej Javy masz Scalę lub Clojure, a przy nich C# już ssie.

Tak, mam Scalę która jest zajebista ale nikt jej nie używa, a poziom abstrakcji jest tak kosmiczny że hello world wymaga dwóch rdzeni i 10GB RAM ;]

Jak nie masz co robić RaveStar to spieprzaj pisać WyderOS w Smalltalku i nie masturbuj się tym legacy szajsem na forum.

0

Tak, mam Scalę która jest zajebista ale nikt jej nie używa

No cóż, skoro kryterium i ilość ficzerów Cię przeraża, to dlaczego to podałeś jako zaletę w przypadku C#?

0
Demonical Monk napisał(a):

Jak nie masz co robić RaveStar to spieprzaj WyderOS w Smalltalku i nie masturbuj się tym legacy szajsem na forum.

"spieprzaj" "masturbuj" "szajsem" :D
Argumenty zaprawdę godne programisty.

0
wirus galwaniczny napisał(a):

C# to Java, a Java powstała około '92-'93, pierwsze wydanie w '95, czyli 20 lat temu, bystrzaku.

Skoro C# to Java, to ciekawe czy chłopaki z Oracle wiedzą, że tworzą C#. :D

Czy muszę wspominać, że do wersji 2.0 włącznie C# był zrzynką Javy w stylu kopiuj+wklej?

No, np. właściwości, typy liczbowe bez znaku czy przeciążanie operatorów to totalna zrzynka z Javy.

wirus galwaniczny napisał(a):

A to z tego, że w 2000 czy tam którymś nie było widać różnicy do tego stopnia, że M$ znalazł się w sądzie i przegrał.

Szkoda tylko, że chodziło o J#, który faktycznie był kopią Javy, a nie o C#, którego podobieństwo do Javy ogranicza się do zbioru wspólnych słów kluczowych zapożyczonych z C.

0

Wiki:
"Since the release of C# 2.0 in November 2005, the C# and Java languages have evolved on increasingly divergent trajectories, becoming somewhat less similar."

;)

0

Super że umiesz czytać wiki, a teraz swoimi słowami i merytorycznie.

0
Demonical Monk napisał(a):

Super że umiesz czytać wiki, a teraz swoimi słowami i merytorycznie.

A Ty umiesz? Do tej pory nic merytorycznego nie napisałeś. Może zapodaj coś na zachętę?

0

Skoro C# to Java, to ciekawe czy chłopaki z Oracle wiedzą, że tworzą C#. :D

Tak, Java posiada dodatki z C#. Wcale mi to nie przeszkadza. Java jako podstawka pod inne języki musi ewoluować. Jest to raczej ukłon w stronę starego kodu niż zachęta dla nowych ludzi. Nowi programiści poznają Javę na tyle ile im będzie potrzebna by likwidować wąskie gardła. Tak jak się wstawia ASMa do C. Pisanie w takim Języku jak Java czy C# to dziś naprawdę masochizm. Zamiast mysleć nad problemem trzeba się bić z archaiczną składnią lub brakującymi bibliotekami, bo język jest zbyt kulawy.
Wcale nie jestem przeciwnikiem C#, ale widzę, że idzie w złym kierunku. Z resztą tak jak wszystkie języki ogólnego przeznaczenia, kiedy zmienia się moda. Jedno jest pewne. Komputerów kwantowych długo nie będzie, a zegary procków stoją już w miejscu i czas na takie języki jak Java czy C# by zeszły ze sceny. Często obserwuję soft dla firm i urzędów pisany w C# czy Javie, który dusi jeden rdzeń ,a reszty nie rusza. Czyste marnotrawstwo. I to nie marny soft za kilka stówek, tylko kombajny po kilkanaście k PLN.

No, np. właściwości, typy liczbowe bez znaku czy przeciążanie operatorów to totalna zrzynka z Javy.

Zbędne bajery. Zwykle niepotrzebne i zaciemniające kod. Po miesiącu pisania arytmetyki po wektorach dla OpenGL człowiek patrzy co tam naskrobał by się upewnić i to prawie zawsze. Fajny ficzer, ale mało praktyczny. Wolę a.add(b) lub a add b zamiast : a + b. Wyraźne nazwy funkcji, z których wynika intencja autora, a nie wieloznaczne konstrukcje.

A teraz załóżmy, że mam operator mnożenia wektorów (dot product) jako * i takie oto wyrażenie:

wynik = a * b * c

I teraz co? Co jest wektorem, a co skalarem? Jaki będzie wynik? No oczywiście trzeba teraz szukać w kodzie co jest c i dlaczego to wyrażenie się wykonuje tak , a nie inaczej skoro operator * ma dwa różne działania? Teraz rozumiesz skąd twierdzenie o zbędnych ficzerach i zaciemnianiu kodu?

Szkoda tylko, że chodziło o J#, który faktycznie był kopią Javy, a nie o C#, którego podobieństwo do Javy ogranicza się do zbioru wspólnych słów kluczowych zapożyczonych z C.

Tak, chodziło o nazwę "Java". A podobieństwo nie ogranicza się tylko do słów kluczowych. To o czym piszesz to detale i cukier syntaktyczny nie mający większego znaczenia.
Nikt nie płacze, że nie ma unsigned typów w Javie. Java została stworzona dla biznesu. A tam się dodaje, mnoży , dzieli i inne słupki liczy, czyli praktycznie nigdzie nie ma potrzeby na typ unsigned. C# ma typy unsigned, ale jak dochodzi do zrobienia czegoś wydajnego, to i tak trzeba zrobić bibliotekę w C. Fajnie że jest, ale w zasadzie nic nie daje.

1
wirus galwaniczny napisał(a):

Komputerów kwantowych długo nie będzie, a zegary procków stoją już w miejscu i czas na takie języki jak Java czy C# by zeszły ze sceny.

Być może masz rację, ale czy schodzą? Raczej się ciągle rozwijają i zdobywają popularność.

Często obserwuję soft dla firm i urzędów pisany w C# czy Javie, który dusi jeden rdzeń ,a reszty nie rusza. Czyste marnotrawstwo.

To nie wynika z języka, tylko z lenistwa programistów. Użycie takiego np. TPL do zrównolegnienia kodu daje narzut raptem kilku linijek kodu.

A teraz załóżmy, że mam operator mnożenia wektorów (dot product) jako * i takie oto wyrażenie:

wynik = a * b * c

I teraz co? Co jest wektorem, a co skalarem? Jaki będzie wynik? No oczywiście trzeba teraz szukać w kodzie co jest c i dlaczego to wyrażenie się wykonuje tak , a nie inaczej skoro operator * ma dwa różne działania? Teraz rozumiesz skąd twierdzenie o zbędnych ficzerach i zaciemnianiu kodu?

W tym przypadku się zgadzam, ale to jest akurat dobry przykład jak przeciążania operatorów nie używać. :) Ale w innych zastosowaniach bywa to przydatne, tylko trzeba się umieć tym posługiwać.

To o czym piszesz to detale i cukier syntaktyczny nie mający większego znaczenia.

Skoro cukier syntaktyczny w C# jest bez znaczenia, to skąd się wziął Lombok dodający kilka bajerów do Javy?

Idąc tym tokiem myślenia, to wszystko powyżej asemblera to cukier składniowy.

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