Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Języki programowania C/C#/C++/JAVA/?
Forum PHP.pl > Inne > Hydepark
Stron: 1, 2
Posio
Hej, jako iż zbliża się koniec wakacji - rzekomo czasu odpoczynku chcę jakoś ukierunkować się na nadchodzący rok akademicki który to jest moim rzeczywistym czasem odpoczynku. Kilka dobrych lat zafascynowany byłem aplikacjami webowymi wykonanymi w technologii PHP / JS + HTML, CSS. Poznałem te technologię w stopniu który mi już wystarczy (przynajmniej PHP) i stwierdziłem że na razie czas z nim skończyć, zająć się czymś innym. Dzięki znajomości PHP i innych technologii webowych znalazłem pierwszą pracę, zarobiłem trochę pieniędzy jako wolny strzelec. Do niedawna dawało mi to satysfakcję ale poczułem że czas się rozwinąć i przeskoczyć na coś "większego". W zamyśle mam zajmowanie się aplikacjami desktopowymi łączącymi się z usługami sieciowymi.

Znam po łebkach C++, C, C#, Javę. Każdego z nich spróbowałem, w każdym napisałem kilka małych aplikacji. Możecie powiedzieć że wielu ma ten dylemat, który język wybrać, lecz w moim przypadku mam jasno określony cel i chcę tylko poradzić się was (którzy być może a raczej na pewno mają większą wiedzę o tych językach niż ja).

Otóż od października planuje rozpoczęcie pracy nad aplikacją (która ma być na początku dość skroma ale z czasem może to się stać dość sporych rozmirów kombajn). Bardzo przydatna będzie spora liczba bibliotek oraz duża społeczność, ale w wypadku w.w języków to chyba jest spełnione.

Aplikacja z założenia ma posiadać kilka głównych cech.
-Bardzo wysoka stabilność (operacje na dużej ilości wrażliwych danych)
-Przyzwoita wydajność (lecz bez przesady, nie będzie wykonywać bilionów obliczeń na sekundę)
-Łatwość połączenia z WEB API
-Wieloplatformowość
-Łączenie funkcji programu z urządzeniami peryferyjnymi

Aplikacja ma być kierowana do polskich przedsiębiorców a jak wszyscy wiemy w tej kwestii wymiata oprogramowanie szyte na miarę systemu ze stajni Microsoftu. Jeśli chodzi o rozwiązanie mobilne - jest w tej kwestii mało ważne
.
Java - mam co do tego języka obawy związane z odkrywanymi co jakiś czas poważnymi błędami.
Jeśli chodzi o C/C++ mam wrażenie że są to języki w których bym się "zajechał zanim bym coś napisał".

Z zestawień które sobie przygotowuje, wychodzi na to, że najlepszą opcją jest platforma .NET w któej mogę łączyć aplikacje serwerowe / desktopowe oraz mobilne (WP/W8). Mam również wrażenie że na polskim rynku 95% komputerów to komputery z oprogramowaniem MS.

Czekam na wasze opinie, oraz teorię/fakty związane z w.w językami.

@SZYBKI EDIT

Dlaczego Java jest tak popularna i jest tyle ofert pracy związanych z tym językiem ?
peter13135
Cytat
Jeżyki programowania

Lkingsmiley.png

Cytat
Dlaczego Java jest tak popularna i jest tyle ofert pracy związanych z tym językiem ?

Dzięki sile bezwładności. Kiedyś nie było .NET'a, ani c#. Java jest już dość stara i była od początku dużą rewolucją, więc namnożyło się aplikacji w niej napisanych. Teraz .NET zdobywa sobie rynek, a java jakby jest w stagnacji.
Mam ciche nadzieję, że scala trochę się rozwinie, albo java 8 doda trochę świeżości... ale jednak wątpie by dogonili .NET'a i c#. Jednak m$ to pieniądze.
Podobnie PHP jest popularne dzięki "sile bezwładności". Gdyby teraz PHP powstało - nie było tyle tanich programistów tego języka i tanich serwerów ciągnących PHP, to pewnie by zbyt wiele rynku nie zdobyło.
Moim zdaniem c# jest sporo lepszy od javy. Jak się ma CLR do JVM nie wiem - obie platformy są dobre.
Jeśli zależy Ci na wieloplatformowości, to java jest dobrym wyborem.
Natomiast, aplikacje dla firm często są robione tylko pod windowsa i jakoś klienci linuxowi się nie skarżą (pewnie dlatego, że ich nie ma).
Posio
Jeśli chodzi o przenośność to tak jak sam zauważyłem nie jest chyba aż tak wymagana. Wersja mobilna ma służyć za coś w rodzaju wyświetlacza danych zgromadzonych przez aplikację serwerową. Co do Javy doskonale ukazuje to index TIOBE http://www.tiobe.com/index.php/content/pap...tpci/index.html , ciągle jest WIELKIM BRATEM ale ciągle spada. Trudno wyczuć ten rynek smile.gif

Ma ktoś pojęcie o licencjonowaniu aplikacji pisanych w C# ? Konkretnie chodzi mi o YAML, zauważyłem że M$ wydaje jakieś typy licencji jeśli chcemy coś tworzyć.
solificati
Cytat(Posio @ 7.09.2014, 15:43:50 ) *
Java - mam co do tego języka obawy związane z odkrywanymi co jakiś czas poważnymi błędami.
Jeśli chodzi o C/C++ mam wrażenie że są to języki w których bym się "zajechał zanim bym coś napisał".

Wadą Javy jest tylko to, że większość projektów jest overengineered (AbstractServiceFactoryInstanceFactory?) i ogólny boilerplate (ile kodu trzeba napisać, żeby cokolwiek zrobić - anonimowe klasy implementujące Runnable?). Problem jest taki, że w dowolnym języku na początku będziesz miał te wady. Jak spróbujesz coś dużego zrobisz w C(++) to albo Ci spuchnie do niemoralnych rozmiarów, albo w ogóle nic nie zrobisz.

Cytat
Z zestawień które sobie przygotowuje, wychodzi na to, że najlepszą opcją jest platforma .NET w któej mogę łączyć aplikacje serwerowe / desktopowe oraz mobilne (WP/W8). Mam również wrażenie że na polskim rynku 95% komputerów to komputery z oprogramowaniem MS.

Pamiętaj, że te przedsiębiorstwa nie siedzą na najnowszych wersjach oprogramowania

Cytat
Dlaczego Java jest tak popularna i jest tyle ofert pracy związanych z tym językiem ?

Bo jest "solidna". Nie ma milionów featerów, które powodują, że zamiast pisać ustala się standardy pisania w danej firmie. I tak będzie jeszcze długo, więc jak Ci się appka rozrośnie to szybciej znajdziesz ludzi do pomocy.
Posio
Cytat(solificati @ 7.09.2014, 22:50:49 ) *
Pamiętaj, że te przedsiębiorstwa nie siedzą na najnowszych wersjach oprogramowania


Póki co aplikacja ma być dla mnie, ma mi dawać radość i widok na to jak się rozwijam. Być może nawet będzie podstawą mojej pracy inżynierskiej (chociaż do tego jeszcze trochę czasu). Kwestia tego, że jesli za te x lat aplikacja będzie dość dopracowana i będzie nadawać się do użytku, to dlaczego by jej nie udostępnić szerszemu gronu ? Zbadałem rynek w który ma celować ta aplikacja, i w większości przypadków gdy pytam ludzi o to czy są zadowoleni z aktualnie używanego oprogramowania to słyszę tylko "Nie za bardzo, ale przynajmniej jak się coś sypie (średnio raz w tygodniu) to przez teamviewera naprawią w kilka godzin".

solificati
Chodzi mi o to, że na maszynach w dużych firmach możesz nie mieć dostępu do najnowszego .net frameworka a IIS też nie musi być najświeższy. Nie ma sensu napalać się na cutting edge. Javy 8 w B2B też długo nie zobaczymy.
ziolo
Ja chciałbym się zapytać kogoś kto siedzie w Javie i Php bo nie tylko sam język się liczy.

Co jest odpowiednikiem Php-owego - Symfony2(ew Zend2).

Czyli jakie narzędzia do tworzenia webowych aplikacji eneterprise są najbardziej trendy ?

Np Hibernete, Strutsy, JBoss ? Tak strzelam co na studiach jeszcze o tym słyszałem, a jaki jest teraz podstawowy(najbardziej przyjęty) stos technologiczny dla Javy ?

Posio
Play , Spring ?
!*!
@Posio - chyba musisz sobie pierw odpowiedzieć na pytanie dla kogo będzie ta aplikacja, brać pod uwagę wiele czynników np. sprzęt stojący w firmach, czasami są to stare rzęchy, które ledwo ciągną windows xp z pasjansem i officem. Jak chcesz się ograniczyć tylko do systemu MS, to polecałbym C#, płacisz za licencję VS tylko, a reszta Cie nie interesuje, chyba że sprzęgasz to z ich serwerem, ale to inna kwestia.
A jeśli coś innego, to Qt, Vala lub Java, tu raczej wielkich różnic nie ma, a wybierasz tylko język który bardziej odpowiada Ci składnią.
markuz
A mi się wydaje, że w ostatnim czasie JavaScript zyskuje coraz większą popularność. Przykładowa firma, niezależnie od systemu (linux/mac/windows itp. - przeglądarka z obsługą js) może odpalić w przeglądarce aplikację RICH która niczym nie będzie się różniła od tej "desktopowej" a dodatkowo nie musi jej nigdzie instalować i ma do niej dostęp z każdego komputera z dostępem do internetu. Kolejnym plusem jest to, że dzięki np. node można w nim pisać też back-end.
tzm
@markuz - piąteczka. dlatego na tym się ostatnio skupiam bo JS napiszesz dosłownie wszystko a wydajność aplikacji zależy tylko od procesora klienta. niby taki język do robienia bajerów w JQ i zawsze raczej kojarzony z front-endem ale można w tym pisać prawdziwe kombajny obliczeniowe. Choć bez PHP się jeszcze nie obejdzie bo jakoś się trzeba jednak zabezpieczać przed kradzieżą aplikacji etc.
solificati
Cytat(tzm @ 8.09.2014, 10:46:44 ) *
@markuz - piąteczka. dlatego na tym się ostatnio skupiam bo JS napiszesz dosłownie wszystko a wydajność aplikacji zależy tylko od procesora klienta. niby taki język do robienia bajerów w JQ i zawsze raczej kojarzony z front-endem ale można w tym pisać prawdziwe kombajny obliczeniowe.

Mądrzy ludzie nie mogą osiągnąć przy gui wydajności porównywalnej z aplikacją qt pisaną przez studentów na darmowych praktykach.
markuz
Cytat
Choć bez PHP się jeszcze nie obejdzie bo jakoś się trzeba jednak zabezpieczać przed kradzieżą aplikacji etc.

A w jaki sposób ktoś ukradnie Ci aplikację napisana w node?

Cytat
Mądrzy ludzie nie mogą osiągnąć przy gui wydajności porównywalnej z aplikacją qt pisaną przez studentów na darmowych praktykach.

Jeszcze nie mogą. Zobacz jak zmieniła się wydajność js na przełomie ostatnich lat. Kiedyś był wykorzystywany do prostych "bajerów" jak wspomniał @tzm np. animacja tekstu itp. - dzisiaj można w nim już pisać proste gry 3D.
redeemer
Cytat(markuz @ 8.09.2014, 11:16:48 ) *
...
Jeszcze nie mogą. Zobacz jak zmieniła się wydajność js na przełomie ostatnich lat. Kiedyś był wykorzystywany do prostych "bajerów" jak wspomniał @tzm np. animacja tekstu itp. - dzisiaj można w nim już pisać proste gry 3D.

asm.js:
https://blog.mozilla.org/blog/2014/03/12/mo...ing-in-firefox/
Cytat
Today, Epic Games and Mozilla are demonstrating how the Web is continuing to evolve as a powerful platform for gaming by providing a sneak peek of Epic’s Soul and Swing Ninja demos, running in Firefox a near-native speeds.

+ jako ciekawostka emscripten:
https://github.com/kripken/emscripten
(np. qt: http://badassjs.com/post/43158184752/qt-gu...via-emscripten)

tzm
Cytat(markuz @ 8.09.2014, 11:16:48 ) *
Jeszcze nie mogą. Zobacz jak zmieniła się wydajność js na przełomie ostatnich lat. Kiedyś był wykorzystywany do prostych "bajerów" jak wspomniał @tzm np. animacja tekstu itp. - dzisiaj można w nim już pisać proste gry 3D.


http://helloracer.com/webgl/

Dla mnie to raczej zaawansowane 3D. Wydajnościowo gołym okiem widać że tnie ale to kwestia kilku lat... dobrze się przygotować na nadchodzące trendy i mieć już jakiś bagaż doświadczeń z JS.

Co do nodejs. Nie wypowiem się, nie ugryzłem jeszcze tego.
solificati
Cytat(markuz @ 8.09.2014, 11:16:48 ) *
Jeszcze nie mogą. Zobacz jak zmieniła się wydajność js na przełomie ostatnich lat. Kiedyś był wykorzystywany do prostych "bajerów" jak wspomniał @tzm np. animacja tekstu itp. - dzisiaj można w nim już pisać proste gry 3D.

Przecież interface to co innego niż gry 3d. Będziesz kontrolki rysował na canvasie? To już winapi jest wygodniejsze. Albo korzystasz z DOMa i masz problem z niepasującym narzędziem do dziedziny problemu (i wolnym narzędziem) albo rezygnujesz z tego, żeby pracować na nieszczelnej abstrakcji.


Cytat(redeemer @ 8.09.2014, 11:35:20 ) *
asm.js:

To nie prędkość sortowania tablicy decyduje o wydajności GUI.

Cytat

Czyli znowu nieszczelna abstrakcja? Życzę powodzenia w profilowaniu albo debugowaniu takiego kodu, bo taki kod będzie się sypał co chwilę.
redeemer
Trochę OFFTOPujemy, ale:

Cytat(solificati @ 8.09.2014, 12:54:40 ) *
To nie prędkość sortowania tablicy decyduje o wydajności GUI.
Nie rozumiem o co dokładnie chodzi Ci z sortowaniem tablicy (prędkość algorytmu sortowania ma wpływ pośrednio na dużo rzeczy), ale co to jest według Ciebie wydajność GUI i jak ją mierzysz?

Cytat(solificati @ 8.09.2014, 12:54:40 ) *
Czyli znowu nieszczelna abstrakcja? Życzę powodzenia w profilowaniu albo debugowaniu takiego kodu, bo taki kod będzie się sypał co chwilę.
Tu chodzi o port aplikacji do JavaScript. I raczej się nie "debuguje i profiluje" takiego kodu wynikowego (js). Będziesz debugował kod np. C/C++ lub sam emscripten. Podobną, aczkolwiek mocno uproszczoną, analogię mamy z js i css. Debugujesz "minified"i "merged" js/css na produkcji?
pedro84
Cytat(Posio @ 7.09.2014, 15:43:50 ) *
Znam po łebkach C++, C, C#, Javę.

Zasadnicze pytanie: z czym chcesz się bawić? Jakiego typu aplikacje pisać? Dla przykładu, jeśli chcesz pisać aplikacje desktopowe pod Win, to trudno będzie znaleźć coś przyjemniejszego niż C#.
solificati
Cytat(redeemer @ 8.09.2014, 14:31:38 ) *
Nie rozumiem o co dokładnie chodzi Ci z sortowaniem tablicy (prędkość algorytmu sortowania ma wpływ pośrednio na dużo rzeczy), ale co to jest według Ciebie wydajność GUI i jak ją mierzysz?

Wydajność GUI najlepiej mierzyć użytkownikiem. Jak użytkownik mówi, że "coś się zacina" to trzeba poprawić.
A chodzi mi o to co asm.js potrafi przyśpieszyć. Potrafi przyśpieszyć operacje seminumeryczne bezpośrednio w kodzie, ale na nic się nie zda w wypadku kodu operującego na DOMie (a zakładam, że tak tworzymy gui w js - jak pisałem, gui na canvas to bezsens), bo problemem jest to, ile poziomów musimy przejść, żeby coś narysować na ekranie.

Cytat
Tu chodzi o port aplikacji do JavaScript. I raczej się nie "debuguje i profiluje" takiego kodu wynikowego (js). Będziesz debugował kod np. C/C++ lub sam emscripten. Podobną, aczkolwiek mocno uproszczoną, analogię mamy z js i css. Debugujesz "minified"i "merged" js/css na produkcji?

Ależ jak najbardziej się debuguje ten kod, bo innego nie ma. Kod c++ nie jest wykonywany, nie ma środowiska wykonania jako takiego.
Porównujesz z minifierem, ale minifier jest prosty. Jeśli w C++ zrobisz prosty błąd to może i wydedukujesz (albo uruchomisz w innym środowisku). Tak jest z js z minifiera. Ale jeśli minifier zmieni Twój kod w nieoczekiwany sposób (nawet teraz wiele z nich potrafi wyciąć co ciekawsze konstrukcje, choćby przy with i eval - dyrektywy angular.js brzmią znajomo?) to pozostaje Ci debugować kod, który on wypluł. Teraz wyobraź sobie, że emscripten to transpiler wielokrotnie bardziej złożony, który tłumaczy z jednego środowiska wykonania na inne, semantyki js i c są bardzo różne, nie idzie zrobić tego idealnie. Namiastką tego może być chociaż zaawansowana kompilacja w Google Closure, gdzie możesz dostać w przeglądarce wyjątkiem na twarz, bo dwa ekrany stacktrace wyżej niezadeklarowałeś pola jako extern. Bez minifikacji oczywiście wszystko działa.
Posio
JS moim zdaniem odpada, niestety ale nie mamy jeszcze w Polsce takiej infrastruktury sieci, gdzie praktycznie by nie występowały awarie (tym bardziej w różnego rodzaju pipidówach) a aplikacja musi być dostępna i użyteczna tak długo jak w kablach płynie prąd. Aplikacja którą chcę tworzyć ma być aplikacją desktopową przystosowaną do PCtów / tabletów z Windowsem 8++ . Nie celuje jeszcze w rynek, bo wiem że zanim ją skończę minie troche czasu, a jeśli chodzi o potencjalnych użytkowników to mam co najmniej 10 zaprzyjaźnionych przedsiębiorstw gdzie nowy sprzęt nie jest problemem (bo sam o niego dbam).

Chcę po porstu wybrać technologię w której będę mógł połączyć wcześniej wymienione aspekty. Nie wiem dlaczego ale JAVA nie wydaje mi się zbyt stabilna (chodzi o aplikacje pisane w javie z których korzystam)
tzm
Ale firmy maja sieci lokalne, serwery swoje na ktorych stoja dedykowane aplikacje, nie sa uzaleznione od infrastruktury krajowej zeby na to zwalac ze JS jest nie dobre.
Kwestia podejscia.. Aplikacje dla firm wrecz nie powinny moim zdaniem nic wysylac poza siec lokalna, moga byc synchronizowane z bazami danych, ale nie moga na nich polegac.
To wrazliwe dane ktore powinny miec dla mnie najwyzszy priorytet jesli chodzi o bezpieczenstwo i wlasnie tutaj JS sie sprawdza jesli nie musisz sie komunikowac z innymi serwerami tylko jednym lokalnym. No i latwosc pisania w tym kodu, ogolnie jezyk z potencjalem dla mnie. A do tego co piszesz... C#.
Posio
W moim przypadku niestety wymaganie jest podłączenie sprzętów peryferyjnych dlatego pisanie w JS pod przeglądarkę odpada. Jakiś interfejs webowy na pewno z czasem zaplanuje ale to odległa przyszłość. Ok, czyli czas się zająć .NET.

Jeśli jeszcze ktoś ma jakieś sugestie, propozycję uwagi to proszę o pisanie, w każdym razie dzięki za pomoc smile.gif
ziolo
C# to dobry wybór.

Moim skromnym zdaniem ważniejsza jest umiejętność pisania obiektowego(chodzi mi o programowanie OOP, wzorce, interfejsy dbałość o kod, a nie pisanie strukturalne przy użyciu klas i czasem dziedzicznia).

Jak już się jest dobrym z OOP, to C#, Java, Php(od 5.3) są na tyle podobne, że przeniesienie się z jednego języka na drugi to żaden problem, o wiele większym jest nauczenie się samego OOP.

Strukturalnie też można pisać, ale potem utrzymwać taką aplikację to masakra.
Posio
Tak jak pisałem, mam już trochę doświadczenia (kilka dobrych lat) w programowaniu w PHP i mój kod może się pochwalić nienaganną jakością, przynajmniej tak mówili w firmie. Z programowania strukturalnego wyszedłem juz przed skończeniem gimnazjum a to już parę lat jest. BTW wyobrażasz sobie C# strukturalne albo jave ? Przecież takiego czegoś nawet chyba nie idzie zrobić :-)
tzm
Aż mi się łezka w oku zakręciła jak napisałeś o tym gimnazjum i pomyślałem że ja tak późno bo pod koniec technikum zacząłem pisać w czym kolwiek więcej niż html/css tongue.gif
!*!
Aplikacje pisane w JS... Może za 20-30 lat będzie to stabilne. Wystarczy popatrzeć na aplikacje w sklepie windows phone, bardzo dużo jest wspomaganych HTML, JS i nawet proste stopery, czytniki kodu qr czy notatki potrafią się wywalić z byle powodu, więc to raczej nadal jest ciekawostka przyrodnicza niż realne środowisko pracy.

Cytat
Nie wiem dlaczego ale JAVA nie wydaje mi się zbyt stabilna (chodzi o aplikacje pisane w javie z których korzystam)

Nie skreślałbym tego. Java ma "złą opinię" głównie przez aplikacje z lat 90 i te środowisko jakie dociągała, żeby się uruchomić. Podobnie jest z Qt, ma fatalną opinię przez KDE, a jako sam język jest rewelacyjne.
markuz
Za 20-30 lat to programowanie będzie wyglądało inaczej wink.gif Już teraz pracują nad komputerami kwantowymi gdzie jednostkami nie będą bity tylko kubity. Sama idea pozostanie taka sama ale na pewno powstaną nowe języki.

Co do stabilności JS wiele zależy od programisty i środowiska. Nie wierzę, że nie da się napisać aplikacji na np. wp wspomaganej przez js która się "nie wysypie z byle powodu".
ziolo
Odbiegając od tematu pisałem kiedyś referat o algorytmach kwantowych.

To jest magia w czystej postaci:

Mamy taką funkcję:


Czyli dziedziną są 0 lub 1.
I funkcja dla argumentu 0: f(0)=0 albo f(0)=1
I dla argumentu 1 tak samo: f(1)=0 albo f(1)=1

Czyli mamy 4 możliwe warianty funkcji f
f1(0)=0, f1(1)=0
f2(0)=0, f2(1)=1
f3(0)=1, f3(1)=0
f4(0)=1, f4(1)=0

Żadna filozofia ale na takim prostym przykładzie pytanie/zagadka.

Ile razy trzeba wywołać funkcję f żeby stwierdzić czy jest stała czy nie ?
Czyli czy f(0)=f(1) ?

Pytanie banalne, oczywiście trzeba wywołać dwa razy funkcję f, bo wywołanie na jednym argumencie nic nam nie powie czy jest stała.

Ale w kwantówce to można rozwiązać raz wywołując funkcję f, tworzymy alternatywną rzeczywistość, wywołując raz funkcję f - możemy stwierdzić czy jest stała.
To jest najprostszy przykład magicznego przyspieszenia algorytmem kwantowym, dlatego zaawansowane algorytmy będą mogły łamać wszelkie szyfry, jak powstaną komputery kwantowe.

Sam algorytm rozwiązania tego prostego problemu jest lekko zawansowany, ale ogólna idea jest tak, że na wejście podajemy kubit( kubit to jest taka nie wiadoma mała, która z określonym prawdopodobieństwem zamieni się na 0 albo na 1 na wejściu).
solificati
Cytat(ziolo @ 9.09.2014, 11:47:13 ) *
To jest najprostszy przykład magicznego przyspieszenia algorytmem kwantowym, dlatego zaawansowane algorytmy będą mogły łamać wszelkie szyfry, jak powstaną komputery kwantowe.

One-time pad nie złamie.

Cytat(!*! @ 9.09.2014, 09:02:17 ) *
Nie skreślałbym tego. Java ma "złą opinię" głównie przez aplikacje z lat 90 i te środowisko jakie dociągała, żeby się uruchomić.

To, i fakt, że większość aplikacji w Javie leżało przez GUI, które było robione najniższym kosztem aby było wieloplatformowe. Wystarczy porównać Eclipse do czegokolwiek od JetBrains.
!*!
Cytat(markuz @ 9.09.2014, 11:26:50 ) *
Już teraz pracują nad komputerami kwantowymi

Słyszałem już o tym kilka(naście?) lat temu, coś się w tej materii zmieniło czy nadal jest to fantastyka dla konsumentów i całość nie wychodzi poza laboratoria?

Cytat(markuz @ 9.09.2014, 11:26:50 ) *
Co do stabilności JS wiele zależy od programisty i środowiska. Nie wierzę, że nie da się napisać aplikacji na np. wp wspomaganej przez js która się "nie wysypie z byle powodu".

Oczywiście że można np. hello world się nie wysypie, ale weź pod to podepnij np. API serwisu który ma "kilka" milionów użytkowników czy wiele innych miliardów danych, nawet jeśli się napocisz i usiądziesz do optymalizacji kodu JS, to wydajnościowo nie będzie to dobre w porównaniu do C#. Podobna sytuacja jest z node.js, kwestie stawiania na tym aplikacji livechatu czy innych wideokonferencji jest mocno dyskusyjna.
darko
Cytat(ziolo @ 9.09.2014, 11:47:13 ) *
... dlatego zaawansowane algorytmy będą mogły łamać wszelkie szyfry, jak powstaną komputery kwantowe.

Pierwsze prototypy powstały już kilka lat temu, jednak należy pamiętać, że nie wszystkie obliczenia z użyciem komputerów kwantowych będą szybsze od tradycyjnych obliczeń algorytmicznych, albo inaczej: użycie komputerów kwantowych ułatwi tylko niektóre obliczenia, komputery kwantowe w większości działań na podstawowej algorytmice będę tysiące razy wolniejsze od tradycyjnych komputerów, które mamy w domach. Pamiętajcie o tym.
tzm
Cytat(darko @ 9.09.2014, 16:16:34 ) *
Pierwsze prototypy powstały już kilka lat temu, jednak należy pamiętać, że nie wszystkie obliczenia z użyciem komputerów kwantowych będą szybsze od tradycyjnych obliczeń algorytmicznych, albo inaczej: użycie komputerów kwantowych ułatwi tylko niektóre obliczenia, komputery kwantowe w większości działań na podstawowej algorytmice będę tysiące razy wolniejsze od tradycyjnych komputerów, które mamy w domach. Pamiętajcie o tym.



Mowisz tak na podstawie?
peter13135
Cytat(tzm @ 9.09.2014, 08:22:35 ) *
Aż mi się łezka w oku zakręciła jak napisałeś o tym gimnazjum i pomyślałem że ja tak późno bo pod koniec technikum zacząłem pisać w czym kolwiek więcej niż html/css tongue.gif

Ojej, cóż za stracone dzieciństwo biggrin.gif
Posio
Eh, jak ten czas zleciał smile.gif

Wczoraj kupiłem książkę "Rework" i mogę ją polecić, bo świetnie się czyta
http://37signals.com/rework/
Dejmien_85
Posio, język to nic, to tylko narzędzie.

Możesz pisać poważne rzeczy w PHP, a także błahe apki w Javie lub C#. Co do desktopów - albo bierzesz C#, albo Javę. Choć to drugie jest OpenSource i z pewnością ominą Cię licencje za korzystanie z VisualStudio (choć z drugiej strony licencja to mniejsza spraw, ot taka inwestycja - a większość komputerów działa na M$, więc raczej nic nie stracisz. Możesz też napisać apkę na Dekstopa w C++, przy użyciu VisualStudio jest to także proste, jedyny problem to bardziej skomplikowany język, tj. zarządzanie pamięcią itd).

Wracając do tematu "poważnych rzeczy" - też kiedyś myślałem, że PHP jest mało poważne, jednak później doszedłem do wniosku, że język to nic.

Poważne rzeczy to:
- Nauka Wzorców Projektowych (Design Patterns),
- Nauka pisania testów (testy jednostkowe, funkcjonalne),
- Algorytmy (tak, to jest poważny temat!),
- Dobre ogarnięcie systemów kontroli wersji (SVN, Git) i odpowiednie z nich korzystanie,
- "Clean Code", czyli jak pisać kod, aby grupie żyło się dobrze,
- Coś z serii "Software Development" (Agile, Scrum itd), czyli jak się brać do tworzenia oprogramowania.
- Wspominałem cosik o "Software Design"? Object Oriented Design? Albo Object Oriented Analysis? To także godne uwagi tematy.

To taki podstawowy "pakiet powagi". Jeśli tego nie ogarniesz, to choćbyś znał 10 języków, to i tak nic "na poważnie" nie napiszesz. ; )

Gdy ogarniesz powyższe tematy, wtedy będziesz "poważny". Dla mnie obecnie nie ma różnicy, czy piszę aplikację w PHP, czy w Javie - najbardziej liczy się projekt aplikacji, implementacja (użycie języka) to kwestia drugorzędna.
solificati
Cytat(Dejmien_85 @ 11.09.2014, 23:04:39 ) *
- Nauka Wzorców Projektowych (Design Patterns)

To akurat jest bardzo zależne od języka. Żeby zacytować klasyka: Design patterns are bug reports against your programming language - Peter Norvig
Posio
Cytat(Dejmien_85 @ 11.09.2014, 23:04:39 ) *
Posio, język to nic, to tylko narzędzie.

Możesz pisać poważne rzeczy w PHP, a także błahe apki w Javie lub C#. Co do desktopów - albo bierzesz C#, albo Javę. Choć to drugie jest OpenSource i z pewnością ominą Cię licencje za korzystanie z VisualStudio (choć z drugiej strony licencja to mniejsza spraw, ot taka inwestycja - a większość komputerów działa na M$, więc raczej nic nie stracisz. Możesz też napisać apkę na Dekstopa w C++, przy użyciu VisualStudio jest to także proste, jedyny problem to bardziej skomplikowany język, tj. zarządzanie pamięcią itd).

Wracając do tematu "poważnych rzeczy" - też kiedyś myślałem, że PHP jest mało poważne, jednak później doszedłem do wniosku, że język to nic.

Poważne rzeczy to:
- Nauka Wzorców Projektowych (Design Patterns),
- Nauka pisania testów (testy jednostkowe, funkcjonalne),
- Algorytmy (tak, to jest poważny temat!),
- Dobre ogarnięcie systemów kontroli wersji (SVN, Git) i odpowiednie z nich korzystanie,
- "Clean Code", czyli jak pisać kod, aby grupie żyło się dobrze,
- Coś z serii "Software Development" (Agile, Scrum itd), czyli jak się brać do tworzenia oprogramowania.
- Wspominałem cosik o "Software Design"? Object Oriented Design? Albo Object Oriented Analysis? To także godne uwagi tematy.

To taki podstawowy "pakiet powagi". Jeśli tego nie ogarniesz, to choćbyś znał 10 języków, to i tak nic "na poważnie" nie napiszesz. ; )

Gdy ogarniesz powyższe tematy, wtedy będziesz "poważny". Dla mnie obecnie nie ma różnicy, czy piszę aplikację w PHP, czy w Javie - najbardziej liczy się projekt aplikacji, implementacja (użycie języka) to kwestia drugorzędna.


Poczułem się jak kilka lat temu zadając pierwsze pytania na tym forum smile.gif . Pisząc, że znam te języki po łebkach, może troche przesadziłem. Nie obce mi zarządzanie pamięcią, wzorce projektowe, czysty kod, czy systemy kontroli wersji. Mam już moim zdaniem sporo doświadczenia w tych dziedzinach i mam też na koncie już kilka udanych dużych projektów. Nie pytałem się "co wybrać, bo nigdy tego nie używałem". Pisałem troche w każdym z tych języków (troche to conajmniej kilka dobrych miesięcy)
i troche każdy z nich poznałem. Chodziło mi raczej o to co się jeszcze "opłaca" a co już nie. Np mimo że c++ / C# z definicji są językami wysokopoziomowymi to zdecydowanie wyższy poziom abstrakcji oferuje C#, dlatego pytam czy warto skorzystać z tego poświęcając troche wydajności, czy lepiej męczyć się w C++. Pytam o to co "jest modne". Trochę żałuję, że zacząłem przygode z programowaniem z PHP bo praktycznie nie zwracałem uwagi na aplikacje desktopowe.

Czyli prostując wątek, nie chodzi mi o wybór języka którym się chcę zająć, a raczej o wybór technologii do wykonania projektu którego główne cechy opisałem w pierwszym poscie.
solificati
Cytat(Posio @ 12.09.2014, 11:23:10 ) *
Nie obce mi zarządzanie pamięcią
[...]
Np mimo że c++ / C# z definicji są językami wysokopoziomowymi to zdecydowanie wyższy poziom abstrakcji oferuje C#, dlatego pytam czy warto skorzystać z tego poświęcając troche wydajności, czy lepiej męczyć się w C++.

Co to znaczy dla Ciebie zarządzanie pamięcią? Znasz modele pamięci swojego kompilatora C++? Pisałeś własne alokatory pamięci? Bo takich rzeczy wymagają duże projekty w C/C++ jeśli chodzi o zarządzanie pamięcią.

Co do poziomu wydajności - myślisz, że będziesz w stanie napisać od nowa biblioteki wydajniej niż standardowe .neta? Czy potrafisz w jakikolwiek sposób przewidzieć gdzie tej wydajności będziesz potrzebował? Bo najczęściej i tak wszystko wisi na sieci albo dysku a nie cpu. Wiesz, że z C# można wywołać kod C(++)? Ale wiesz też gdzie leżą koszty takich wywołań i jak ich unikać?

Jeśli możesz sobie pozwolić na .net, bierz C# (i F#, bo fajny!), jeśli nie, Javę. C++ zostaw bo przez dwa lata projektu nie zauważysz zysku wydajności, ani postępu projektu.
Posio
@UP. I o taką odpowiedź mi chodziło. Nigdy nie miałem styczności z większymi projektami w tych językach i dlatego nie potrafiłem ocenić, który z nich się nada.
solificati
To jeszcze dopiszę odnośnie c# i javy. Java jest open source. W długich projektach to ważne, bo OSS to taki support za darmo. W wypadku .neta bierzesz wszystko na raz, zarówno fixy do bugów bezpieczeństwa, które musisz mieć, jak i zmiany, które w niewytłumaczalny sposób zakłócają Twój program. W wypadku OSS masz więcej kontroli. Masz też większe szanse, żeby się dowiedzieć czemu albo jak coś działa.

Co nie zmienia faktu, że c# jest nowocześniejszym językiem (środowiskiem niekoniecznie, wirtualne maszyny Javy to lata badań w dużych ośrodkach) a pisanie okienek w nim jest przyjemniejsze niż w Javie.

No i żeby była jasność, nie znam C# a aplikacje desktopowe pisałem dawno temu.
Dejmien_85
Cytat(Posio @ 12.09.2014, 11:23:10 ) *
Nie pytałem się "co wybrać, bo nigdy tego nie używałem". Pisałem troche w każdym z tych języków (troche to conajmniej kilka dobrych miesięcy)


To, że w języku X pisze się kilka miesięcy, albo używa jakiegoś narzędzia przez kilka miesięcy nie oznacza jego znajomości - C++ można poznać w kilka miesięcy, ale aby nabyć doświadczenie godne profesjonalisty to już lata programowania.

To samo tyczy się wzorców projektowych, stosowania różnych metodyk i rozwiązań.

I dalej podtrzymuję swoją opinię - język to tylko narzędzie, możesz pisać "poważne rzeczy" zarówno w Javie, jak i C# - nie ma problemu, aby także pisać w C++ (jednak bez doświadczenia przy komercyjnych aplikacjach lepiej sobie daruj, bo "postrzały w stopę" zniechęcą Cię do rozwoju aplikacji).

Ja na Twoim miejscu zastanowiłbym się nad Javą i C# - to już tylko kwestia Twojego gustu, wybór pomiędzy M$ i światem Open Source.

Choose your destiny! ; )

Cytat(!*! @ 9.09.2014, 09:02:17 ) *
Java ma "złą opinię" głównie przez aplikacje z lat 90 i te środowisko jakie dociągała, żeby się uruchomić.


Java ma złą opinie głównie z tego powodu, że jest dziurawa i często odkrywane są exploity, które w dużym stopniu wpływają na bezpieczeństwo.
solificati
Cytat(Dejmien_85 @ 14.09.2014, 12:43:04 ) *
Java ma złą opinie głównie z tego powodu, że jest dziurawa i często odkrywane są exploity, które w dużym stopniu wpływają na bezpieczeństwo.

Jak to "java jest dziurawa"? Jeśli bierzesz pod uwagę 0-daye z zeszłego roku w JRE to nie wiem co w porównaniu powiedzieć o bezpieczeństwie w C++.
Dejmien_85
Cytat(solificati @ 14.09.2014, 18:26:14 ) *
Jak to "java jest dziurawa"? Jeśli bierzesz pod uwagę 0-daye z zeszłego roku w JRE to nie wiem co w porównaniu powiedzieć o bezpieczeństwie w C++.


1. Java jest daleko za C++ w przypadku bezpieczeństwa, nie ma tutaj nawet dyskusji na ten temat. ; )
2. W Javie takie 0-day'e pojawiały się często, nie mówiąc już o tym, że Oracle ociągało się z wprowadzaniem poprawek nawet do szeroko znanych exploitów. Teraz wydaje się, że jest lepiej. Zobaczymy jak długo.
solificati
Cytat(Dejmien_85 @ 15.09.2014, 08:06:00 ) *
1. Java jest daleko za C++ w przypadku bezpieczeństwa, nie ma tutaj nawet dyskusji na ten temat. ; )
2. W Javie takie 0-day'e pojawiały się często, nie mówiąc już o tym, że Oracle ociągało się z wprowadzaniem poprawek nawet do szeroko znanych exploitów. Teraz wydaje się, że jest lepiej. Zobaczymy jak długo.

Nie rozumiesz o czym piszesz. Mylisz co jest językiem, co środowiskiem uruchomieniowym i kto odpowiada za, każdą z tych rzeczy. A próbujesz jeszcze pisać o bezpieczeństwie.

Trochę jakbyś pisał, że PDF jest w tyle w przypadku bezpieczeństwa za HTMLem, bo Adobe nie zawsze updateje wtyczki readera do przeglądarek.
Dejmien_85
Cytat(solificati @ 15.09.2014, 11:31:31 ) *
Nie rozumiesz o czym piszesz. Mylisz co jest językiem, co środowiskiem uruchomieniowym i kto odpowiada za, każdą z tych rzeczy. A próbujesz jeszcze pisać o bezpieczeństwie.


Aby nie przeciągnąć tej dyskusji na zły tor powstrzymam się od komentowania powyższych oskarżeń o niewiedzę itd. ; )

Szanowny solificati, piszą słowo "Java" mam na myśli kompilator, powstały przez niego bytecode oraz JVM (wirtualną maszynę). Uważam, że w kwestii bezpieczeństwa całe to ustrojstwo (mógłbym to nazwać środowiskiem, ale wtedy mógłbyś mnie oskarżyć o to, że nie potrafię odróżnić kompilatora od JVM, bo JVM oficjlanie zwie się środkowiskiem uruchomieniowym) jest mniej bezpieczne od skompilowanego kodu binarnego - i to z co najmniej dwóch powodów:

1) Bytecode można o wiele łatwiej zdekompilować (mam tutaj na myśli black-hat hacking w celu poznania aplikacji od wewnątrz, aby łatwiej było szukać w niej dziury).
2) Aplikacja Javowa, "czytana w locie" (tj. wirtualna maszyna czytająca bytecode) jest bardziej podatna na "czynniki zewnętrzne" (niecnych wysiłków hakierów - dodam, że black-hat, bo zaraz mnie oskarżą o to, że nie potafię odróżnić hakera od crakera - i crakierów), niż skompilowany kod binarny.

Prawdą jest, że do C++ są różne kompilatory, jedne lepsze, drugie gorsze, jednak nie trzeba chyba nad wyraz nikogo przekonywać, że skompilowany kod binarny jest "bezpieczniejszy", od bytecodu i interpretatora.

Co innego ma się do pisana aplikacji - zgodzę się, że trudniej napisać dobrze zabezpieczony kod (w sensie czytelności, zarządzania pamięcią itd) w C++. Zdarzyło mnie się nawet przeczytać jedną książkę, w której autor wspomniał o firmie, która została doprowadzona do bankructwa przez to, że programiści pisali w pośpiechu aplikację w C++ (ta apka utrzymywała całą firmę), która stała się tak zawiła i posiadała tyle bugów (od wycieków pamięci, po błędy w logice), że ostatecznie ją zawiesili ten projekt, zaczęli inny i firma po prostu zbankrutowała.

Tyle powiem od siebie. Oczywiście jestem tylko człowiekiem i mogę się mylić. ; )
Turson
Sam zastanawiam się nad rozpoczęciem nauki "poważniejszego" języka niż PHP, by za kilka lat móc podjąć w nim pracę. Głównie myślałem o C# i Javie, w C# podoba mi się składnia, ale z drugiej strony w Javie jest dobre, to że i napiszemy apkę webową, i mobilną, i desktopową... Mobilne mnie szczególnie ciekawią. C# to chyba tylko Windows, a ograniczacie się do tylko aplikacji desktopowych średnio mnie ciekawi, więc pewnie padnie ja Javę... Jak oceniacie łatwość zdobycia pracy, możliwości zarobku w porównianiu tych języków? A może Ruby rolleyes.gif
solificati
Cytat(Dejmien_85 @ 16.09.2014, 08:20:42 ) *
Aby nie przeciągnąć tej dyskusji na zły tor powstrzymam się od komentowania powyższych oskarżeń o niewiedzę itd. ; )

No widzisz, a 0-daye były w JRE. Ktoś wziął, JRE, znalazł luki pozwalające utworzyć własny ClassLoader. Język nie miał znaczenia, bo po prostu nikt tworząc scenariusze nie przewidział manipulowania java.reflection przy wywołaniu nowego ClassLoadera. Ale możesz się upierać, że język miał znaczenie - JRE napisane jest w C++.

Cytat
1) Bytecode można o wiele łatwiej zdekompilować.
2) Aplikacja Javowa, "czytana w locie" jest bardziej podatna , niż skompilowany kod binarny.

Citation needed. I jeszcze chciałbym wiedzieć jakie to ma znaczenie, security by obscurity jest już przeterminowane.

W skrócie, błędy są i będą w dużych programach. Jednym z takich jest JRE (napisany w "bezpiecznym" C++) i skoro jest na prawie każdym komputerze, który warto spenetrować to będą się te błędy pojawiać. Tak samo jak w przeglądarkach, czytnikach pdf i programach Office. A każdy kto jest przekonany, że jeśli napisze podobną funkcjonalność w C++, wymaganą dla aplikacji, która będzie bezpieczniejsza to musi sobie żartować.

I jeśli masz zamiar porównywać bezpieczeństwo to porównuj porównywalne rzeczy. Jeśli chcesz założyć, że stdliby i plik .exe stanowią runtime, to Java ma nieporównywalnie więcej mechanizmów zwiększających bezpieczeństwo. W C++ zwykły format string nadal potrafi dać pełną kontrolę i jedyna szansa jest w sandboxie na poziomie OS, albo ostatnio tylko na poziomie hiperwizora.


@Turson: w Javie pieniądze są tylko w aplikacjach serwerowych. Ewentualnie podłapać się do jakiegoś startupu, który ma ciśnienie na androida, ale kasuje za usługę a nie aplikację.
mrc
@solificati
@Dejmien_85

baaasmiley.gif Dajcie sobie buzi i przestańcie ciągnąć kolejną wojnę. Kolega pytał o propozycje języków, a nie przekrzykiwanie się "X jest lepsze, Ty się nie znasz".

@Turson
Również zaczynam się rozglądać. Mam w głowie jeszcze jeden startup dla php, ale poza tym to pójdę chyba w C++ (być może nawet nie Microsoftowe).
solificati
Cytat(mrc @ 16.09.2014, 13:05:11 ) *
@solificati
@Dejmien_85
Dajcie sobie buzi i przestańcie ciągnąć kolejną wojnę. Kolega pytał o propozycje języków, a nie przekrzykiwanie się "X jest lepsze, Ty się nie znasz".

Tu nie ma dyskusji co jest lepsze. Fakt, że błędy były w logice programu c++ albo w środowisku javy nie zmienia ani trochę tego czy c++ jest lepszy albo gorszy od javy.
Pyton_000
A ja bym chyba postawił na SeeSharp wink.gif i .Net
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.