Jaki jezyk desktopowy na poczatek?

Jaki jezyk desktopowy na poczatek?
Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Chyba żartujesz @ShookTea, obecnie do wszystkiego są klikalne generatory - czy to Swing, czy Qt. Z jednej strony korzystasz z potężnego frameworka, z drugiej strony każesz odwzorować to w C++ bez użycia cięższych zabawek...

Sam kod jest niepoprawny - pierwsza operacja na GUI odpala wątek event dispatchera i to w nim powinny być realizowane operacje na interfejsie. Inaczej nie ma gwarancji że program nie wypieprzy się z braku synchronizacji między tymi wątkami.

@bogdans: I Ty uczysz Javy? :| To samo co wyżej pisałem...

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
0

"ps java to kobyla, wiec z tym juz Od razu daje spokoj.."
Dlaczego autorowi probojecie wmowic jezyk, ktorego on sam nie chce?

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
3

Niech mi ktoś jeszcze powie że Java jest interpretowana to dostanie takiego kopa że do działu Delphi wleci.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Żeby @Demonical Monk nie miał pretekstu do wymądrzania się.

Kopiuj
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.BorderLayout;
 
public class Ramka extends JFrame {
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }   
    private static void createAndShowGUI() {
        JFrame ramka = new JFrame("Okno z przyciskiem");
        ramka.setSize(800,600);
        ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ramka.getContentPane().add(new JButton("Przycisk"), BorderLayout.CENTER);
        ramka.setLocationRelativeTo(null);
        ramka.setVisible(true);
    }
}
Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Świetnie, tak tym zaburzyłeś wcześniej wspominaną prostotę kodu, że nie wiem co my zrobimy?!

Dało się sensownie od razu ;)

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Prostota jest rzeczą względną. Myślę, że tworzenie w pierwszej instrukcji programu nowego wątku i anonimowej klasy wewnętrznej może przerazić początkującego.

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeśli chcesz prostotę to czemu niby nie od razu tak:

Kopiuj
require 'shoes'

Shoes.app :width => 300, :height => 200 do
  button("Click me!") { alert("Good job.") }
end

Osobiście Java mi nie podchodzi z 2 powodów. Przez brak przeładowania operatorów (oraz po części moją nieznajomość Javy), czasem nie mam pojęcia czy coś jest dopuszczalne, czy nie. auto boxing tylko to jeszcze zagmatwał. Drugą sprawą jest to iż narzędzia do Javy jak Ant czy Maven są IMHO strasznie dziwnie pokomplikowane i nie potrafię ich ogarnąć.

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
0

Do autora wątku: Jeżeli będziesz dalej myślał to nigdy nie wybierz języka albo zaczniesz jakiś i przerwiesz naukę bo będziesz chciał sprawdzić inny. Każdy na forum będzie bronił swojej idei bo dla niego to było lepsze dla innego kolejne. Nauka jednego języka nie oznacza, że nie będziesz mógł po ok roku pisać coś w innym. Sam mógłbym ci wychwalać zalety jednego czy drugiego tylko po co? Podam ci natomiast moją drogę i może wyciągniesz jakiś wniosek.
Zacząłem 3 lata temu w delphi. Było ciężko wiadomo początki. Rok później zacząłem naukę c++. Przyznam z początku było ciężko gdyż języki się bardzo różnią ale pewne podstawy/rozumowanie można było przenieść co ułatwiło prace i w sumie po miesiącu tak bardzo polubiłem ten język, że kompletnie zrezygnowałem z delphi. Za jakiś czas zacząłem równolegle dłubać w bibliotekach takich jak wxwidget, qt i... .net. Pisanie w c++ z wykorzystaniem qt i wx jest fajne ale dużo prostsze było zastosowanie w c++/CLI dzięki czemu mogłem poznawać .net. Rozpoczęcie pisania apek w c++/cli czy potem w C# poszłó bardzo szybko, tzn byłó dużo łatwiejsze niż wcześniej przejście z delhi na c++.Chyba rok temu porzuciłem c++/cli przechodząc na czystego c# oczywiście nigdy nie przestając pisać w c++ bo dla mnie bynajmniej ten język ma coś w sobie takiego co mnie ciągnie do niego i bardzo przyjemnie pisze się apki wykorzystując qt czy wxwidget. Rozpoczęcie pisania apków webowych z wykorzystaniem php po pracy z c++ było czysta formalnością. Tak wiec na tę chwile jeżeli tworze stronę to wykorzystuje php, jeżeli muszę coś napisać bardzo szybko na windowsa wykorzystuje c# jeżeli chce żeby aplikacja zajmowała minimalną ilość pamięci lub też mogła być skompilowana dla linuxa biorę c++. 3 lata nauki żeby do tego dojść a nadal ogrom pracy przede mną bo widzę ile jeszcze mi brak. Tak wiec jak widzisz jednym językiem nie da się "żyć" przynajmniej według mojej opinii. Mam nadziej, że w czymś pomogłem.

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
2

Łatwe przejście z C++ na PHP? No tak, przecież jak pominąć fakt że:

* mają zupełnie inne rodzaje typowania
* jeden jest kompilowany, drugi interpretowany
* mają zupełnie, całkowicie inną filozofię operatorów
* type juggling, loose comparison i dziurawy jak dupa węża garbage collector (trzy pojęcia które klepaczowi PHP nie mówią zupełnie nic, potem powstaje radosny soft i jest radośnie hakowany)

... to właściwie te języki się niczym nie różnią. Mógłbym tak wymieniać te różnice w nieskończoność.

Zapewne nie potrafisz wytłumaczyć jak to działa?

Kopiuj
$x = array(1, 2, 3);
var_dump(in_array("3' OR '1'='1", $x)); // bool(true)

PS. Z pozdrowieniami od deusa:

Kopiuj
var_dump(max(0, "69 klaczy"));

Miłego dnia ;d

robcio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Opole
  • Postów: 533
0

Ja uważam ,że dobra znajomość samego języka programowania nie jest aż taka ważna. Nie trzeba znać wszystkich możliwych konstrukcji języka aby być dobrym programistą. Przykładem jest C++. Nikt chyba nie zna wszystkich konstrukcji tego języka poza stroustrupem a jednak jest możliwe stworzenie w tym języku dobrego programu choć trzeba się czaserm natrudzić. Trzeba po prostu potrafić przelać myśli na obiekty,zależności pomiędzy obiektami, zauważać różnicę pomiędzy nimi, serie iteracji, struktury dancyh i algorytmy wykonywane na nich itp. Ja bym brał język z jak najbogatszą biblioteką standardową, bo np C++ nie ma aż takiej rozbudowanej biblioteki i samemu se trzeba wytworzyć pewną abstrakcję(Niby są te iteratory ,algorytmy STL, klasy pojemnikowe ,ale i tak są one ubogie w porównaniu z javą). W javie np mamy dużo programów open source oraz bibliotek które możemy swobodnie analizować. Można się sporo nauczyć.

  • Rejestracja: dni
  • Ostatnio: dni
0

Powiedźcie mi czy na sam początek dla 27 latka, który chce przekwalifikować się na programistę, język C# będzie odpowiedni? ;)

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
2

Do nauki od zera polecam C lub Scheme. Właśnie chodzi o to, że ucząc się masz dostać język jak najbardziej goły, by potem ktoś się nie zastanawiał dlaczego ma użyć tutaj ordered set zamiast hash set, czy czegoś innego. On ma to czuć. Poza tym ciężko jest zrozumieć czym jest typ referencyjny nie znając wskaźników. Chodzi o to, by początkujący nie miał nic, nawet nie chodzi o to na początku by nauczył się pisać skomplikowane programy bo to będzie robił później mając już wiedzę co, jak i dlaczego. Wtedy może pisać w językach wysokopoziomowych z bogatą biblioteką, by nie zawracać sobie czterech liter, ale musi mieć podstawy. Nie wytłumaczysz komuś co to jest operacja atomowa i po co to, skoro całe życie używał Javy z synchronized, nie zrozumie czym jest obserwator bez zrozumienia pojęcia delegatów i programowania funkcyjnego (co ostatnio mi się zdarzyło, kumple (przygotowujący się do olimpiady) omawiali algorytmy sortujące, ja się spytałem "po chu*", a oni, że jak będzie trzeba posortować własne struktury, ja na to, że przecież w STL'u mamy funkcję sortującą z możliwością podania funktora, na co oni, że nie znają kolejności argumentów. No jprdl).

  • Rejestracja: dni
  • Ostatnio: dni
0

Nigdy nie pisałem. No troszkę 10 lat temu w Liceum w turbo pascalu ale już o tym zapomniałem. A chcę pisać aplikacje biznesowe.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2
winerfresh napisał(a):

Poza tym ciężko jest zrozumieć czym jest typ referencyjny nie znając wskaźników.

Niby dlaczego? Referencja jest pewną koncepcją, wskaźnik jest inną koncepcją. W niektórych językach są dostępne oba te twory, w innych tylko jeden z nich. Co ma jedno do drugiego?

niezdecydowany
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Bieszczady
9

Hmmm, a nie lepiej spróbować popisać w pythonie, javie, c#, COBOLU, Brainfuck'u, php'ie ... i wybrać ten który nam się podoba ? po co to dążenie do wyimaginowanej drabiny języków, którą każdy programista musi pokonać ? Pisz w tym co Cie jara, sklill sam przyjdzie - prędzej czy później.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

@Autor wątku

Jeśli chodzi o języki desktopowe to masz mniej więcej taki wybór:
a) C# (Visual Studio Express - darmowe, MonoDevelop, SharpDevelop)
b) Java (darmowa - Eclipse)
c) Python: wxPython, Qt (PySide, PyQt), Tkinter (standardowy / domyślny interfejs)
d) Lazarus / Free Pascal

C# działa na PC, Mac, Linux, Android, iOS.

Jeśli chodzi o Python-a to wxPython jest polecany przez autora języka. Qt jest bardziej atrakcyjny graficznie (PySide ma lepszą licecję) a Tkinter dostajesz wraz z instalką Pythona. Python poza tym jest bardzo przejrzystym i wygodnym językiem.

Lazarus jest też bardzo wygodny - to klon Delphi. A skompilowane programy bardzo wydajne. Poza tym sam język (Pascal) bardzo czytelny.

Pracę można zdobyć tylko w dwóch pierwszych środowiskach (jeśli chodzi o GUI).
W Pythonie zwykle szukają do Django (web).

Znam dobrze tylko to ostatnie, jeśli ktoś zna więcej niż jedno z tych środowisk to chętnie poczytam jakieś porównanie.

Eksperymentalnie można się pobawić z:

  • C++ (wxWidgets, Qt) - przenośne, wygrzane - ale język bardzo złożony - więcej czasu stracisz na jego poznawanie niż na implementację
  • JavaScript (Adobe AIR, TideSDK) - aplikacja web na desktopie

Do tworzenia GUI NIE polecam:

  • ASM / WinAPI (ze względu na pracochłonność)
  • C (ze względu na najbardziej pracochłonne wśród języków "łańcuchy znakowe")
  • PHP (ze względu na raczej powolny rozwój PHP-GTK)
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

C# działa na PC, Mac, Linux, Android.

A ile tego C# na tym Macu, Linuksie, Androidzie, etc? Bo ja jakoś nie słyszałem, żeby Mono było komercyjnie wykorzystywane. Bardziej jako ciekawostka.

A jeśli chodzi o IDE do Javy to są:

  • Eclipse (najpopularniejsze w Polsce),
  • NetBeans (wg mnie najbardziej intuicyjne; chyba popularne wśród PHPowców, bo ma dużo bajerów związanych z PHP, HTML, CSS, JS, itd),
  • IntelliJ IDEA - najbardziej zaawansowane IDE do Javy (mowa o wersji komercyjnej, z community można się kłócić),
  • Rejestracja: dni
  • Ostatnio: dni
0

Do listy bibliotek pythona warto uwzględnić Kivy, które jest majstersztykiem :)
Warto też zaznaczyć, że nie tylko poszukują koderów do django, ale i też do tworzenia systemów rozproszonych.

  • Rejestracja: dni
  • Ostatnio: dni
0

szacun panowie za zainteresowanie tematem - z 2 stron zrobilo sie 5, watek przyda sie na pewno niejednej osobie poza mna..

@somekind: à propos .net - fakt, maly error:> chodzilo mi o asp.net, porownanko o ile jeszcze dobrze pamietam bylo w ktoryms numerze komputer swiat ekspert, pierwsza wzmianka na jaka sie natknalem o tym ze technologie konkuruja ze soba na polu 'web' ....a tak przy okazji - ktos na goldenline.pl stwierdzil ze php5 + symfony2(ale 2 a nie 1.4) moze smialo stawac w szranki z takim asp.net, z tego wzgledu ze symfony2 prezentuje wysoki poziom i jest porownywalny z framework'ami .net'owymi..co wy na to?

à propos wydajnosci aplik w c++: piszesz teoretycznie...czyli w praktyce juz niekoniecznie i cos w c# moze byc wydajniejsze niz w c++(oczywiscie ten sam kod)? myslalem ze to raczej regula(tzn ze w c++ aplikacja wydajniejsza), z tego wzgledu ze c# narzuca ta cala swoja dodatkowa warstwe abstrakcji ktora trzeba przetlumaczyc no i kod w nim posiada forme posrednia czyli bytecode (czy cos ala bytecode)

co do wydajniejszego samego pisania to juz napisali inni wczesniej, ze latwiej pisze sie w tym aplikacje

@Wibowit: na polu bitwy pozostal python, c++ i c#...a ty dodajesz jeszcze jave... hmm..

szczerze mowiac, robilem cos w javie jakis czas temu przy okazji stosowania mostka php/java(fajna zabawka:), jakies banaly typu okienka(akurat to nie bylo trudne), do tego jakis biblio do .rtf, i nawet calkiem niezle sobie z tym poradzilem...wlasciwie moje pierwsze kroki w programowaniu obiektowym to byla wlasnie java, trzeba bylo poczytac minimum teorii o obiektowce, zrozumialem mniej wiecej klase ktora stosowalem ale pamietam ze nie bylo to latwe, klasa dosc rozbudowana...

to byly moje pierwsze kroki w java, i pamietam ze minusem bylo ze wszystko robi sie obiektowo, zero progr strukturalnego co generalnie mnie odstraszylo na poczatek(dziedziczenie po 10u klasach gdzie w php czy w c robila to jedna wbudowana czy wlasna funkcja)..

dodatkowo tu na forum wiele osob mi ta jave odradzilo, i na innych forach rowniez argumentujac ze na tym etapie moze byc za trudna, wiec jezeli sa inne latwiejsze opcje nie widze sensu zeby sie w to ladowac(co do zastosowan oczywiscie zdaje sobie sprawe ze to potezne narzedzie)

WYDAJNOSC: milo ze ten temat poruszyles, gdyby nie argumenty przeciw javie i c++(trudnosc tych jezykow szczegolnie drugiego) to wybor bylby oczywisty, po prostu jeden z nich - ze wzgledu na wydajnosc (w ogóle to mnie troche zaskoczyles myslalem za java nie jest az tak wydajna)...z listy zostaje python i c#, piszesz ze python jest generalnie wolny, szkoda, bo to obniza jego pozycje, zostaje wiec c# skoro wydajnoscia zbliza sie do javy i c++ (odnosnie JS i v8, za przeproszeniem o kant d..y rozbic takie aplikacje desktopowe uruchamiane przez browser bo co to za desktop app jak w linii polecen jej nie uruchomisz)

@vpiotr cos wspomina ze pypy jest tylko 2razy wolniejszy do java/c++, ale sam zauwazasz ze jego testy sa niemiarodajne wiec sie trzymam twej wersji....po cichu licze ze jednak moze ktos zna jakies akceleratory dla pythona(?)

@dampe: jestes kolejna osoba ktora poleca jezyki c-podobne czyli c#/c++, java...utwierdza w przekonaniu....ale reszty za bardzo nie rozumiem, mozesz jasniej? trudniej przejsc z czego na co? z c++ na ruby trudniej niz z C++ na c#? poznanie frameworkow wiekszym wyzwaniem niz samego jezyka? ale to chyba sa dwie rozne rzeczy bo jak sie naumiem jezyka to moge swojego frameworka napisac, a IDE dobrac to ktore mi pasuje(jak w przypadku php - eclipse/aptana/netbeans/pdt/inne)....z drugiej strony fakt, fajne gotowe frameworki ulatwiaja, dla przykladu frameworki php jeszcze klkanascie lat temu kulaly jak cholera, jakby ich nie bylo, wiec patrzac od tej strony moje pytanie w domysle to tez jednoczesnie pytanie o ilosc i jakosc narzedzi i frameworkow dostepnych dla danego jezyka oprocz samego jezyka)

@koziolek: sugerujesz ze c++ nie ma takiego wsparcia w postaci tutoriali? podana przez ciebie lista i tak pokrywa sie mniej wiecej z 'faworytami' tego 'plebiscytu';]

@Inquis1t0r: dokladnie nic dodac nic ujac;)

@ShookTea: wyglad kodu - niby nie jest az tak zle..czesciowo zrozumialy jak dla mnie, czesciowo nie..dostep do pol obiektu jak w JS

1.Ramka dziedziczy po JFrame(klasa wbudowana, interfejs[?]),
2. konstruktor Ramka bez argumentow
3. this.setDefaultCloseOperation() - konstruktor wywoluje odziedziczona metode konkretnie tej klasy (Ramka), czyli this., co ta metoda robi nie wiem do konca, domyslam sie ze ustawia domyslna operacje podczas zamykania okna, poprzez uruchomienie zdarzenia, z parametrem JFrame.EXIT_ON_CLOSE, czyli poprzez stala klasy JFrame, wyjdz po zamknieciu
4. this.setSize(800, 600) - ustawia rozmiar okna 800 ma 600
5. this.add(new JButton("Przycisk")) dodaje przycisk do obiektu tej klasy (Ramka), przycisk jest tez obiektem, klasy JButton(klasa wbudowana[?])
6. nie rozumiem;] prawdopodobnie wywolanie kodu, funkcja main
7. do zmiennej r typu klasa Ramka przypisywany jest nowy obiekt ramka
8. r.setVisible() - dziedziczona metoda setVisible() dostepna w obiekcie r wyswietla obiekt jakim jest ramka/okno

Zrób podobną ramkę (nie okno dialogowe) w C++ korzystając z WinAPI. Porównamy prostotę działania.

nie znam c++, zadanie zupelnie nie dla mnie..ale skoro dla c++ istnieje tez swing czyli framework to chetnie bym zobaczyl wersje swing-owa w c++

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Tak, PyPy jest wolny, dlatego jest używany do różniastych symulacji finansowych i innych cudów (widziałem takie projekty i dość rzetelne benchmarki po znajomości). Zweryfikujcie swoje statystyki ;]

WYDAJNOSC: milo ze ten temat poruszyles, gdyby nie argumenty przeciw javie i c++(trudnosc tych jezykow szczegolnie drugiego) to wybor bylby oczywisty, po prostu jeden z nich - ze wzgledu na wydajnosc

Yhy, potencjalnie Java wypada lepiej w niektórych benchmarkach niż C++. Podkreślam: LEPIEJ. Obecne JIT wymiata, potrzebuje tylko trochę czasu działania aplikacji żeby się "rozgrzać", owy wysoki poziom potrafi czasem zrekompensować masę rzeczy które w C++ już by ssały. Mówienie że im niższy poziom tym szybsze i wydajniejsze aplikacje będą powstawały to popularnonaukowa bzdura jakich mało.

Kolejny punkt: porównywanie języków na podstawie tego, jak wygląda kod tworzący okienko z dwoma przyciskami i napisem "Hello world" to jak porównywanie królów polski po długości wacków.

Używać PHPa nie polecam pod żadnym pozorem, jeśli jesteś nowy i masz szansę tego syfu nie poznać to lepiej się zainteresuj czymś sensownym (django? ruby?). PHP to totalna parodia, obecnie w VMce utrzymujący projekt developerzy łatają wycieki pamięci spowodowane wprowadzeniem garbage collectora [rotfl]

à propos wydajnosci aplik w c++: piszesz teoretycznie...czyli w praktyce juz niekoniecznie i cos w c# moze byc wydajniejsze niz w c++(oczywiscie ten sam kod)? myslalem ze to raczej regula(tzn ze w c++ aplikacja wydajniejsza), z tego wzgledu ze c# narzuca ta cala swoja dodatkowa warstwe abstrakcji ktora trzeba przetlumaczyc no i kod w nim posiada forme posrednia czyli bytecode (czy cos ala bytecode)

Tak jak pisałem - część wysokopoziomowych mechanizmów dosłownie ratuje tyłek i pozwala na to, żeby niektóre rzeczy znacznie szybciej realizować na wysokim poziomie. Jak chcesz wydajności ze swojej reguły to programuj na kartach perforowanych. Dostaniesz ogromny wpływ na każdy aspekt działania aplikacji, po czym korzystając z niego i tak zbudujesz sobie frameworki podobne do tych z C++ lub C#, tylko 30 razy wolniejsze i słabiej zoptymalizowane. Załapałeś o co mi chodzi?

[dopisane]

... w php ich nie ma i jakos nikt nie placze

W PHP niczego nie ma, nikt nie płacze bo większość to banda klepaczy która nie zna formalnych definicji operatorów. Sam język jest naprawdę tragiczny, tak naprawdę kiedyś był zwykłym systemem szablonów, który ktoś postanowił rozszerzyć do postaci... w sumie nie wiadomo czego.

  • Rejestracja: dni
  • Ostatnio: dni
0

@bogdans: ten drugi snippet jest juz duzo bardziej niezrozumialy, szczegolnie o tej porze...widac w nim platanine java-owa, obiekt w obiekcie, a to jeszcze w klasie itd, lekka masakra...

w pierwszej instrukcji programu nowego wątku i anonimowej klasy wewnętrznej może przerazić..

mnie przerazilo i to bardzo... na czym polega ta niby prostota tego jezyka bo jej nie widze:>?

@robcio:

Przeładowanie operatorów to zagmatwana sprawa
... w php ich nie ma i jakos nikt nie placze

@mr_jaro: racja , sam musze zdecydowac ale teraz i tak nie mam mozliwosci zaczac - brak warunkow do nauki - wiec czasu mam duzo na zastanowienie sie.... twoja sciezka byla dosyc 'kreta' zmieniales kierunek, ja chcialbym tego uniknac i eksperymenty (tym samym czas nauki) ograniczyc do minimum, bo latka leca.. stad zalozony watek..

dodam tez ze: generalnie zalozenie jest takie ze zarobkowo bede pisac w php, a na desktop bede pisac z poczatku cos tylko na swoje potrzeby (stad milo zeby to chodzilo i na linux i na win), i tez nie tak ze doskonalenie php'owych zagadnien bedzie na tym ciepiec dlatego ten desktop jezyk ma byc latwy i przyjemny, druga sprawa skoro juz zainwestuje w niego czas to milo zeby nie byl to jakis freepascal ktorego zadna firma nie uzywa, jezeli mnie dobrze rozumiesz

z tego co widze to toczy sie pewnego rodzaju spor czy lepszym jezykiem na poczatek jest ten nizszego poziomu ktory przy okazji uczy/zmusza do poznania budowy samego komputera, jego architektury co daje dodatkowa bardzo cenna wiedze ale i dobre nawyki(jak np c czy assembler), czy lepszym jednak ten wysoko poziomowy w ktorym szybciej pisze sie aplikacje i ktorego mozna szybciej sie nauczyc(ktory niekoniecznie uczy dobrych nawykow, jak np java)

wydaje mi sie ze na pewno jedna rzecz ma znaczenie, nie kazdy ma pol zycia przed soba zeby je poswiecic na nauke nie wiadomo jakiej ilosci jezykow, chcialby tez z tego zycia skorzystac, a 'wieczny student' szczegolnie na poczatku nie zarabia

wracajac do wyboru jezyka:

bardzo duzo osob mimo wszystko polecilo c w roznych odmianach c/c++/c#, reszta jezykow byla w znacznej mniejszosci

@vpiotr: twoj koncowy 'ranking' rozwiewa wiele watpliwosci, tzn szanse na prace dzieki pythonowi oceniasz dosc nisko szczegolnie odnosnie gui(tylko wlasciwie po co piszesz ze polecasz jako jezyl desktopowy skoro i tak go pozniej odrzucasz 'Pracę można zdobyć tylko w dwóch pierwszych środowiskach (jeśli chodzi o GUI)'. )

na polu bitwy pozostal: c#, i gdzies niewiele nizej python(ze wzgledu na nizsza wydajnosc) i c++(ze wzgledu na zlozonosc), java z okazji tego poprawnego snippetu odpadla (niestety)

mam pytanie co do c#:

  • jak bardzo jest podobny do javy i w czym, i analogicznie do c++?
  • w czym jest latwiejszy od javy?
  • jak mniej wiecej wyglada jego organizacja czy dostepna jest tylko obiektowka czy strukturalne tez?
  • czy pisanie wyglada na zasadzie: dziedziczenie po klasach wbudowanych zawartych w jakichs bibliotekach standardowych, bibliotekach zewnetrznych i w glownej mierze opiera sie na takim podejsciu?
  • na czym polega ta latwosc/wydajnosc pisania w nim?

co do c++: ponawiam pytanie, bo praktycznie nikt mi nie odpowiedzial: jezeli potraficie to ocenic, ile czasu osobie srednio zdolnej zajelaby nauka c++ a ile c#? czy roznica bylaby duza?

co do pythona:

  • pytanie czy jest sens ladowac sie w ten jezyk skoro mialbym go wykorzystywac jako desktop lang a nie web? pytam o to bo ktos wspomnial ze glownie szuka sie ludzi do django, wiec powiedzmy ok zyskalbym ale w duzej czesci powielalbym funkcjonalnosci php
  • czy jest sens skoro musialbym sie uczyc nowej skladni (niepodobnej do c)?
  • i czy jest sens skoro do zastosowan desktop ten jezyk jest zwyczajnie wolny ?

mam obawy ze strace czas na nauke nowej skladni, nowego jezyka a w zamian dostane wolny jezyk, na ktory specjalnie nie ma zapotrzebowania w firmach(rynek desktop app)

plusy to na pewno latwosc nauki i przenosnosc, ale nie wiem czy to nie za malo

wychodziloby ze na poczatek najsolidniejszy kandydat to c#, a python ewent jako 3ci jezyk, hobbystycznie po godzinach by z czasem zastosowac go do web(chyba ze okaze sie megamozgiem i zalapie c++ przy pierwszym podejsciu:>)

@vpiotr: napisales

C# działa na PC, Mac, Linux, Android, iOS.

@vpiotr, @Rev: To sprawdzone informacje czy tylko teoretyczne mozliwosci wymienione gdzies na stronie? tworzyles cos na linusia w c#?

ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 629
0

pankracy inc. :

  1. Klasa wbudowana.
  2. Zgadza się. Chodzi o to, że po zamknięciu ramki EXIT_ON_CLOSE wyłącza się program, po zamknięciu ramki DISPOSE_ON_CLOSE zamyka się ta jedna ramka (na wypadek, gdyby w jednym programie było ich więcej), po "zamknięciu" ramki DO_NOTHING_ON_CLOSE nic się nie dzieje, nawet ta ramka jeszcze istnieje i można na niej działać (to po prostu rodzaj ignorowania zamykania ramki)
  3. Właśnie wywołanie kodu. Tablica stringów (String[] args) zawiera argumenty wybrane podczas uruchamiania programu.

Co do C++ i Swinga, to jest trochę odwrotnie. Swing zawiera WinAPI, Swing został przeznaczony dla Javy. W C++ możesz pisać w czystym WinAPI lub innym frameworku, ale klasy należące do pakietu Swing działają tylko dla Javy (chyba, że znajdziesz jakąś przeróbkę)

  • Rejestracja: dni
  • Ostatnio: dni
0

Przykład aplikacji napisanej w C#/mono:

Banshee to odtwarzacz plików multimedialnych (audio i video) charakteryzujący się wykorzystaniem niewielu zasobów systemowych przy oferowaniu dużej liczby funkcji.
Program oferuje takie funkcje jak zarządzanie bibliotekami multimediów, obsługa i integracja z serwisem Last.fm, pobieranie okładek do plików mp3, wyszukiwanie i tworzenie playlist i znacznie więcej. Banshee to również doskonałe narzędzie do synchronizowania multimediów z urządzeniami przenośnymi (iPod, G1 itp.).
Banshee jest programem rozpowszechnianym na licencji MIT/X11. Został napisany w C# (z użyciem platformy Mono) jako część środowiska GNOME.

Jak masz linuxa zainstaluj sobie i zobacz jak działa.... Zwróć uwagę jeszcze, że jak program był pisany mono było w starszej wersji (mniej rozwinięte), teraz się cały czas rozwija więc powinno być lepiej...

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
1

Jeszcze jakieś dwa lata temu Banshee był domyślnym odtwarzaczem w Ubuntu, ale tak się często wysypywał, że zamienili go z powrotem na Rhtyhmboxa. Różnicy w szybkości nie pamiętam, zresztą Banshee sypał się tak często, że nie wiadomo było czy skończył się ładować przed wysypaniem :P Różnic w funkcjonalności jakichś drastycznych nie ma.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
1
pankracy inc. napisał(a):

@Wibowit: na polu bitwy pozostal python, c++ i c#...a ty dodajesz jeszcze jave... hmm..

szczerze mowiac, robilem cos w javie jakis czas temu przy okazji stosowania mostka php/java(fajna zabawka:), jakies banaly typu okienka(akurat to nie bylo trudne), do tego jakis biblio do .rtf, i nawet calkiem niezle sobie z tym poradzilem...wlasciwie moje pierwsze kroki w programowaniu obiektowym to byla wlasnie java, trzeba bylo poczytac minimum teorii o obiektowce, zrozumialem mniej wiecej klase ktora stosowalem ale pamietam ze nie bylo to latwe, klasa dosc rozbudowana...

to byly moje pierwsze kroki w java, i pamietam ze minusem bylo ze wszystko robi sie obiektowo, zero progr strukturalnego co generalnie mnie odstraszylo na poczatek(dziedziczenie po 10u klasach gdzie w php czy w c robila to jedna wbudowana czy wlasna funkcja)..

dodatkowo tu na forum wiele osob mi ta jave odradzilo, i na innych forach rowniez argumentujac ze na tym etapie moze byc za trudna, wiec jezeli sa inne latwiejsze opcje nie widze sensu zeby sie w to ladowac(co do zastosowan oczywiscie zdaje sobie sprawe ze to potezne narzedzie)

WYDAJNOSC: milo ze ten temat poruszyles, gdyby nie argumenty przeciw javie i c++(trudnosc tych jezykow szczegolnie drugiego) to wybor bylby oczywisty, po prostu jeden z nich - ze wzgledu na wydajnosc (w ogóle to mnie troche zaskoczyles myslalem za java nie jest az tak wydajna)...z listy zostaje python i c#, piszesz ze python jest generalnie wolny, szkoda, bo to obniza jego pozycje, zostaje wiec c# skoro wydajnoscia zbliza sie do javy i c++ (odnosnie JS i v8, za przeproszeniem o kant d..y rozbic takie aplikacje desktopowe uruchamiane przez browser bo co to za desktop app jak w linii polecen jej nie uruchomisz)

@vpiotr cos wspomina ze pypy jest tylko 2razy wolniejszy do java/c++, ale sam zauwazasz ze jego testy sa niemiarodajne wiec sie trzymam twej wersji....po cichu licze ze jednak moze ktos zna jakies akceleratory dla pythona(?)

Java jako język jest prosta i w miarę dobrze przemyślana. Jest pierdylion frameworków i z początku to może przytłaczać (ale bynajmniej nie należy używać wszystkich frameworków jak leci).

0 programowania strukturalnego? Są tacy co robią całe projekciki (typu na studiach) na staticach. Ale to, że Java promuje OOP to przecież dobrze.

Dziedziczenie po 10 klasach? Pewnie wynika z nieznajomości biblioteki standardowej. W Javie jest spory nacisk na OOP i różne funkcjonalności są w różnych klasach, wobec czego trzeba po prostu poczytać jakieś porządne książki czy tutoriale, które przybliżą nieco te hierarchie klas.

Przed PyPy moim zdaniem jeszcze długa droga. W moim projekcie (TarsaLZP) gdzie jest poniżej 1k linii kodu (tzn wyłączając linie bez kodu) na PyPy 1.8.0 się w ogóle nie odpalał, bo leciał jakiś error z wnętrza VMki.
Jak już wspomniałem, testowanie na krótkich programikach jest dość bezsensowne, bo nie testuje to stabilności i wszechstronności optymalizacji w VMce. Mój program ma poniżej 1k linii i już PyPy słabo sobie na nim radzi. Z drugiej strony wcale nie musisz wykonywać jakichś ciężkich obliczeń w swoich programach i wtedy wydajność logiki w języku X nie ma wielkiego znaczenia.

aurel
  • Rejestracja: dni
  • Ostatnio: dni
8

co do c++: ponawiam pytanie, bo praktycznie nikt mi nie odpowiedzial: jezeli potraficie to ocenic, ile czasu osobie srednio zdolnej zajelaby nauka c++ a ile c#? czy roznica bylaby duza?

IMHO nauka C++ zajmuje tak mniej więcej 3618 dni, natomiast C# około 1234 dni i 5 godzin.

dodatkowo tu na forum wiele osob mi ta jave odradzilo, i na innych forach rowniez argumentujac ze na tym etapie moze byc za trudna

Jeżeli Java jest za trudna, to daruj sobie C++.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

Python
Wydajnością Pythona bardzo bym się nie martwił.
Jeśli chodzi o aplikacje GUI to nawet nie zauważysz że to Python, zwłaszcza
jeśli zastosujesz SQL-a i komponenty do wykresów.
W Pythonie można programować też GPU (są odpowiednie narzędzia).

Python stosowany jest szeroko przy obliczeniach naukowych i w modelowaniu.
Jego wydajność zwykle poprawia się przy pomocy modułów napisanych w innych językach,
w tym C/C++ i Pascal.

Język jest bardzo wygodny, mam natomiast wątpliwości czy projektowanie GUI jest wygodne.
Znam i używam program napisany w Pythonie - Task Coach.
Ściągnij i zobacz czy widzisz że to Python.

Aktualnie u siebie widzę go co najwyżej jako narzędzie dodatkowe (skrypty przetwarzające pliki)
lub język skryptów aplikacji (oprócz Lua). Jako narzędzie główne GUI - niekoniecznie.
Może to wynik przyzwyczajenia do Delphi. Może gdybym rzeźbił w ASM/WinAPI to byłbym szczęśliwy
w każdym środowisku.

Ciekaw jestem czy komuś udało się zastosować Pythona na większą skalę w GUI.

C#
Co do tego czy C# jest na Linux to nie mam wątpliwości.
Spotkałem się przynajmniej z dwoma polskimi firmami które tworzą oprogramowanie w oparciu o C#/Mono.
Czy to jest dobra para i czy jest więcej takich firm w Polsce - nie wiem.
Ale skoro C# jest już nawet na mikrokontrolerach (.NET Micro Framework), to coś musi być na rzeczy.

JavaScript
Dzisiaj JavaScriptu nie musisz już uruchamiać w przeglądarce. Możesz jej nawet nie mieć na maszynie.
Wystarczy node.js.
Biorąc pod uwagę że Microsoft promuje JavaScript/HTML5/CSS jako narzędzia dla aplikacji desktop
w Windows 8 nie odrzucałbym tak od ręki tej kombinacji.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6824
0

sugerujesz ze c++ nie ma takiego wsparcia w postaci tutoriali? podana przez ciebie lista i tak pokrywa sie mniej wiecej z 'faworytami' tego 'plebiscytu';]

na pewno w przypadku Javy i programowania okienkowego znacznie szybciej znajdziesz pomoc ponieważ ze względu na niski próg wejścia w tą technologię jest większe zapotrzebowanie na podstawową pomoc.

//edit: w przypadku C++ jak ktos bierze się na serio za okienka to już ma na tyle dużo doświadczenia, że potrafi znacznie wydajniej wyszukiwać informacje w dokumentacji.

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Donośnie wydajności Pythona to polecam zobaczyć sobie wyniki benchmarka:
http://attractivechaos.github.com/plb/

Dla sudoku:
Język C: 1.0
Python 119.9 (CPython-3.2)
Python 19.5 ( PyPy-1.4.1 )
Python 4.4 ( Shedskin-0.9@GCC-4.3.2 )

Standardowy Python jest około 120 razy wolniejszy niż ANSI C.
Inne odmiany Pythona tj. Shedskin-0.9@GCC-4.3.2 to są translatory Pythona do C++ dlatego nie można tego nazwać Pythonem.

A tu są kody testów:
https://github.com/attractivechaos/plb

Demonical Monk
  • Rejestracja: dni
  • Ostatnio: dni
0

Yhy, tylko gość benchmarkuje PyPy 1.4, podczas kiedy niedługo wyjdzie 2.1, a wydajność takich rzeczy należy mierzyć po uprzednim wykonaniu próbnego testu, tak aby JIT zaczął działać. Słabo przeprowadzony benchmark kilku algorytmów jest totalnie niemiarodajny.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.