-
1. Data: 2013-05-15 20:08:41
Temat: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: boryspower <b...@g...com>
Witam,
"Programuję" (raczej bawię się) od około 15 lat w różnych językach, lecz wciąż nie
mogę się odnaleźć... Tak wiem - głupie to strasznie... Chciałbym w końcu zakorzenić
się przy jednej technologii i zacząć realizować moje pomysły, których mam wiele. Mam
nadzieję, iż z Waszym doświadczeniem moglibyście mi coś poradzić - pchnąć w
odpowiednim kierunku.
Zaczynałem od BASICa na Spectrumie, później Pascal, Turbo Pascal, C, C++, assembler,
Java, Delphi, VHDL, HTML, PHP, Ruby, Free Pascal, Python, C#, ostatnio znów trochę
Java... i różne języki skryptowe.
Do tej pory nic znaczącego nie napisałem, prócz paru aplikacji na studiach i "for
fun". W każdym języku mi czegoś brakuje... Naprawdę nie mogę się pozbierać by przy
którymś zaczepić się na dłużej.... Pomóżcie....
Moje wymagania (i czego mi brakuje w niektórych językach), jaka powinna być ta moja
"idealna" technologia/język:
1. Obiektowość (na poziomie tej z C++ mi wystarczy, nie musi to być a'la Ruby)
2. Łatwe budowanie i obsługa GUI (a'la Borland, VS itp)
3. Łatwa obsługa wielowątkowości (np mam problemy z C# gdy wątki mają wpływać na GUI)
4. Prosta obsługa baz danych (minimum MySQL i jakieś bazy lokalne a'la SQLite)
5. Możliwość tworzenia aplikacji client-server
6. Dobre środowisko z kolorowaniem składni i auto-uzupełnianiem/podpowiadaniem
składni
7. Możliwość budowania aplikacji dla Windows i Linux (ewentualne przekompilowanie pod
drugim systemem, jak w Lazarusie (FPC) albo MONO)
8. W miarę prost budowanie wersji instalacyjnych
9. Technologia "na czasie"
10. ... pewnie coś jeszcze o czym zapomniałem :)
Teoretycznie wszystkie te warunki najlepiej spełnia Java (tak mi się wydaje), tylko
ten 8 punkt mi pod Javę nie pasuje...
Co Wy byście mi polecili?
Ps. Tylko proszę nie mieszajcie mnie z błotem za pytanie na które teoretycznie
mógłbym odpowiedź wygooglować - uwierzcie mi, że szukałem... długo i bezskutecznie
szukam a teraz liczę na Was, że pod mój konkretny przypadek coś mi doradzicie :)
Pozdrawiam!
Przemek
-
2. Data: 2013-05-15 22:22:50
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: Tomek Kańka <t...@t...eu.org>
boryspower <b...@g...com> napisał(a)
> Witam,
>[...]
> 8. W miarę prost budowanie wersji instalacyjnych
>[..]
>
> Teoretycznie wszystkie te warunki najlepiej spełnia Java (tak mi się wydaje), tylko
ten 8 punkt mi pod Javę nie pasuje...
>
Nie polecę Ci języka, bo nie potrafię, ale odniosę się do tego poyżej.
Budowanie intstalatorów, jest bardziej zależne od docelowego systemu niż
języka w którym strorzyłeś program. Pod Windows masz setup.exe, czy inny
.msi, pod Linuksem paczki rpm, a pod OSX jeszcze coś innego.
--
Tomek
-
3. Data: 2013-05-15 22:49:09
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: boryspower <b...@g...com>
W dniu środa, 15 maja 2013 22:22:50 UTC+2 użytkownik Tomek Kańka napisał:
> boryspower napisał(a)
>
> > Witam,
>
> >[...]
>
> > 8. W miarę prost budowanie wersji instalacyjnych
>
> >[..]
>
>
>
>
> Nie polecę Ci języka, bo nie potrafię, ale odniosę się do tego poyżej.
>
>
>
> Budowanie intstalatorów, jest bardziej zależne od docelowego systemu niż
>
> języka w którym strorzyłeś program. Pod Windows masz setup.exe, czy inny
>
> .msi, pod Linuksem paczki rpm, a pod OSX jeszcze coś innego.
>
>
>
> --
>
> Tomek
Ten punkt nr 8 wynika chyba raczej z opcji "publikowania" projektu z Visual Studio
Express Edition.... ta opcja jest z jednej strony genialna, z drugiej strasznie
skopana przez Microsoft (przynajmniej w wersji EE, nie wiem jak np w VS Prof)
--
Przemek
-
4. Data: 2013-05-15 22:54:54
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: Radoslaw Jocz <r...@g...com>
Dobre podejscie to C, C++, C#, Java w zaleznosci od projektu.
Nie ma jezyka najlepszego do wszystkiego.
-
5. Data: 2013-05-15 23:18:03
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: boryspower <b...@g...com>
W dniu środa, 15 maja 2013 22:54:54 UTC+2 użytkownik Radoslaw Jocz napisał:
> Dobre podejscie to C, C++, C#, Java w zaleznosci od projektu.
>
> Nie ma jezyka najlepszego do wszystkiego.
Często powracałem do C++, ale pisząc aplikacje z GUI ciężko zapewnić sobie
przenośność kodu między windowsem/linuxem... Próbowałem ogarnąć QT, ale jakieś dziwne
jest... dawno temu podobne miałem zdanie o wxwidgets (może się już coś zmieniło...),
dotNET to z kolei gwałt na pingwinie ;)
--
Przemek
-
6. Data: 2013-05-15 23:34:48
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: Tomek Kańka <t...@t...eu.org>
boryspower <b...@g...com> napisał(a)
> W dniu środa, 15 maja 2013 22:54:54 UTC+2 użytkownik Radoslaw Jocz napisał:
>> Dobre podejscie to C, C++, C#, Java w zaleznosci od projektu.
>>
>> Nie ma jezyka najlepszego do wszystkiego.
>
> Często powracałem do C++, ale pisząc aplikacje z GUI ciężko zapewnić sobie
przenośność kodu między windowsem/linuxem... Próbowałem ogarnąć QT, ale jakieś dziwne
jest... dawno temu podobne miałem zdanie o wxwidgets (może się już coś zmieniło...),
dotNET to z kolei gwałt na pingwinie ;)
>
Jeśli chcesz przenośne GUI, to polecam Eclipse RCP. Jednym klikiem
generujesz aplikacje na wiele systemów, z natywnym launcherem i
odpowiednim jre. Używałem Win/Lin/OSX bez żadnych problemów.
Zaletą (IMHO) RCP jest to, że applikacje zachowują się tak samo, a
jednocześnie używają natywnych kontrolek, więc wyglądają jak "normalne"
programy w danym OS-ie.
--
Tomek
-
7. Data: 2013-05-16 04:24:39
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: A.L. <a...@a...com>
On Wed, 15 May 2013 11:08:41 -0700 (PDT), boryspower
<b...@g...com> wrote:
>Witam,
>
>"Programuję" (raczej bawię się) od około 15 lat w różnych językach, lecz wciąż nie
mogę się odnaleźć... Tak wiem - głupie to strasznie... Chciałbym w końcu zakorzenić
się przy jednej technologii i zacząć realizować moje pomysły, których mam wiele. Mam
nadzieję, iż z Waszym doświadczeniem moglibyście mi coś poradzić - pchnąć w
odpowiednim kierunku.
>
>Zaczynałem od BASICa na Spectrumie, później Pascal, Turbo Pascal, C, C++, assembler,
Java, Delphi, VHDL, HTML, PHP, Ruby, Free Pascal, Python, C#, ostatnio znów trochę
Java... i różne języki skryptowe.
>Do tej pory nic znaczącego nie napisałem, prócz paru aplikacji na studiach i "for
fun". W każdym języku mi czegoś brakuje... Naprawdę nie mogę się pozbierać by przy
którymś zaczepić się na dłużej.... Pomóżcie....
Jezeli nie programujwsz zawodowo, to co za roznica?....
Masz za to lusus robic wszystko na co masz ochote. Wiec proponuje abys
wyszedl poza krag jezykow ktore wziely swoj poczatek w Pascalu i
Simuli i rozpatrzyl jezyki reprezentuajce inne paradygmaty (Prolog dla
programowania w logice czy Scala, Clojure i F# dla programowania
funkcyjnego. Czy wieloparadygmatowy system Mozart-OZ)
Proponuje tez wrocic dp "korzeni" i poparzec na Smalltalk. Obecnei
rozwijana wersja, calkiem otwarta, to Squeak.
Proponuje tez zapoznac sie z jezykiem Ada aby zobaczyc jak wyglada
PORZADNIE zaprojektowany jezyk
A.L.
-
8. Data: 2013-05-16 06:16:54
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: "M.M." <m...@g...com>
W dniu środa, 15 maja 2013 20:08:41 UTC+2 użytkownik boryspower napisał:
> pchnąć w odpowiednim kierunku.
Takie pchnięcie kogoś może okazać się po jakimś czasie że było w
złym kierunku. Można natomiast dyskutować o samych językach i
dostępnych narzędziach. Wtedy masz podstawę do tego aby samemu na
coś się zdecydować.
> Teoretycznie wszystkie te warunki najlepiej spełnia Java
> (tak mi się wydaje), tylko ten 8 punkt mi pod Javę nie pasuje...
> Co Wy byście mi polecili?
Polecam właśnie Javę, jest najbliżej mojego ideału. Java to bardzo dobry
język który nadaje się do większości zastosowań. O ile się nie mylę, o
ma jedynie problemy w zastosowaniach do sterowania. Może zabrzmi to dziwnie,
ale pomimo że jest blisko mojego ideału, rzadko po nią sięgam. Jednak Ty
nie pisałeś nic o ultra wydajności i ukrywaniu kodu źródłowego - więc
polecam.
Ostatnio najczęściej sięgam po C++ i QT, albo po PHP i JS. W tym pierwszym
zestawie mogę szybko zrobić przenośną aplikację GUI bez udostępniania
kodu źródłowego, a w tym drugim mogę szybko zrobić aplikację sieciową.
> Ps. Tylko proszę nie mieszajcie mnie z błotem za pytanie na które
> teoretycznie mógłbym odpowiedź wygooglować
Moim zdaniem to dobre pytanie na grupę. Jeśli będą chcieli
się kłócić o swoje ulubione narzędzia, to będzie ciekawy wątek :)
Pozdrawiam
-
9. Data: 2013-05-16 07:47:09
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: Andrzej Jarzabek <a...@g...com>
On 15/05/2013 19:08, boryspower wrote:
>
[...]
> 3. Łatwa obsługa wielowątkowości (np mam problemy z C# gdy wątki mają
> wpływać na GUI)
[...]
> 8. W miarę prost budowanie wersji instalacyjnych
> 9. Technologia "na czasie"
> 10. ... pewnie coś jeszcze o czym zapomniałem :)
>
> Teoretycznie wszystkie te warunki najlepiej spełnia Java (tak mi się
> wydaje), tylko ten 8 punkt mi pod Javę nie pasuje...
Punkt 8 to pikuś, od tego są narzędzia. Problemem jest punkt 3 - Java,
jak większość mainstreamowych języków ma model wątków oparty na
dzieleniu wszystkiego i jawnej synchronizacji przez locks i conditional
variables. Teoretycznie wbudowane w język synchronized i notify trochę
upraszaczają pisanie programów, ale nie rozwiążąn raczej twojego
problemu "wątki mają wpływać na GUI", bo to kwestia projektu.
We wszystkich popularnych językach/technologiach masz co prawda
biblioteki oferujące wyższego poziomu abstrakcje współbieżności, ale bez
wsparcia w języku nie zapewnią ci odpowiedniej enkapsulacji
gwarantującej brak owych problemów.
Języki rozwiązujące ten problem inaczej są zazwyczaj mało popularne i
będziesz miał problem z innymi wymaganiami - GUI, narzędzia, bycie "na
czasie".
Proponuję się przyjrzeć natomiast rozwiązaniom w ramach technologii
takich jak Java czy .NET ze względu na to, że możesz łatwo łączyć różnee
języki - np. mieć backend napisany w Scali a GUI w Javie (albo nawet w
Groovym, który ma taką sympatyczną rzecz jak SwingBuilder), czy też
backend w F# a GUI w C# - zarówno Scala jak i F# mają swwoje (różne)
rozwiązania problemu współbieżności.
Z drugiej strony trochę też jest tak, że sensowność szukania takich
rozwiązań zależy od skali problemu - jeśli program jest stosunkowo
niewielki, a ma problemy z wątkami, to można się w pierwszej koleności
zastanowić, czy naprawdę dobrze rozumiemy jak posługiwać się mutexem i
condition variable i np. jak prawidłowo za ich pomocą przekazać dane z
wątku do wątku.
-
10. Data: 2013-05-16 08:29:02
Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
Od: boryspower <b...@g...com>
W dniu czwartek, 16 maja 2013 04:24:39 UTC+2 użytkownik A. L. napisał:
> On Wed, 15 May 2013 11:08:41 -0700 (PDT), boryspower
>
> boryspower wrote:
>
>
>
> >Witam,
>
> >
>
> >"Programuję" (raczej bawię się) od około 15 lat w różnych językach, lecz wciąż nie
mogę się odnaleźć... Tak wiem - głupie to strasznie... Chciałbym w końcu zakorzenić
się przy jednej technologii i zacząć realizować moje pomysły, których mam wiele. Mam
nadzieję, iż z Waszym doświadczeniem moglibyście mi coś poradzić - pchnąć w
odpowiednim kierunku.
>
> >
>
> >Zaczynałem od BASICa na Spectrumie, później Pascal, Turbo Pascal, C, C++,
assembler, Java, Delphi, VHDL, HTML, PHP, Ruby, Free Pascal, Python, C#, ostatnio
znów trochę Java... i różne języki skryptowe.
>
> >Do tej pory nic znaczącego nie napisałem, prócz paru aplikacji na studiach i "for
fun". W każdym języku mi czegoś brakuje... Naprawdę nie mogę się pozbierać by przy
którymś zaczepić się na dłużej.... Pomóżcie....
>
>
>
> Jezeli nie programujwsz zawodowo, to co za roznica?....
>
>
>
> Masz za to lusus robic wszystko na co masz ochote. Wiec proponuje abys
>
> wyszedl poza krag jezykow ktore wziely swoj poczatek w Pascalu i
>
> Simuli i rozpatrzyl jezyki reprezentuajce inne paradygmaty (Prolog dla
>
> programowania w logice czy Scala, Clojure i F# dla programowania
>
> funkcyjnego. Czy wieloparadygmatowy system Mozart-OZ)
>
>
>
> Proponuje tez wrocic dp "korzeni" i poparzec na Smalltalk. Obecnei
>
> rozwijana wersja, calkiem otwarta, to Squeak.
>
>
>
> Proponuje tez zapoznac sie z jezykiem Ada aby zobaczyc jak wyglada
>
> PORZADNIE zaprojektowany jezyk
>
>
>
> A.L.
Dzięki :) lecz trochę mam już dość "prymitywnej" zabawy w różnych językach -
chciałbym w którymś osiągnąć trochę wyższy stopień zaawansowania i w końcu ukończyć
jakiś większy projekt, opublikować go i mieć satysfakcję z obserwowania licznika
pobrań oraz feedbacku od userów :)
--
Przemek