Skocz do zawartości

Wybór Języka Oraz Środowiska


Gość Leniwy

Rekomendowane odpowiedzi

Witajcie

 

staję przed wyborem języka programowania do migracji aplikacji która aktualnie niestety jest pod mikroszitem w dotnecie :(

Wykorzystuje głównie porty szeregowe oraz graficzny interfejs (dla "Pani Krysi')

 

jakie środowisko i język polecacie do migracji

Aplikacja ma działać pod linuxem - fedora

 

Dosyć elastyczny aby migracja pod np. debiana nie była problemem

 

Myślałem nad migracją albo do C++ albo do JAVY ew. python

 

Które z języków są najbardziej stabilne?

jakie środowiska polecacie? Jakieś doświadczenia z aplikacjami przemysłowymi ?

  • Downvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

W jakim języku jest napisana aplikacja?"jest pod mikroszitem w dotnecie" oznacza mniej wiecej tyle, że korzysta z bibliotek .NET i CLR, ale napisana może być w C# (domyślam się, że tak) jak również w VB czy C++. W skrajnym przypadku jest to połączenie C++ (np.obsługa portów) oraz C# (GUI).

 

Ogólnie nie licz, że będzie lekko :) Ta "migracja" może okazać się de facto koniecznością napisania od nowa. Zresztą jeśli gdzieś zostały spisane jakieś konkretne wymagania, to może to być najprostsze i najmniej kosztowne rozwiązanie.

 

Co do wyboru języka, to wybierz ten, w którym czujesz się najmocniejszy. Dyskusji nt. podobieństw i różnic między Javą, C++ i C# masz zatrzęsienie. Poczytaj i sprawdź co wybrać.

Może Java? W sumie oferuje "przenoszalność" kodu, co może być zaletą na wypadek, gdyby ktoś kiedyś chciał z powrotem pójść w stronę Windows.

 

Albo przeczekaj... :) Jakoś tak pod koniec ubiegłego roku MS odgrażał się, że udostępni .NET dla Open Source.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja nie bardzo sie sie znam na programowaniu,

ale mam wrazenie ze bedziesz musial przepisac swoja aplikacje na nowo.

Na Linuxa moge Ci polecic:

 

C lub C++ (C polecam bo znalazlem wiecej tutoriali , ale C++ moze okielznasz)

  - IDE   Code::Blocks , do tego wbudowany plugin wxSmith do budowania GUI z wxGlade

  http://www.codeblocks.org/

  Przyklad:

 

 

Python tez jest ciekawa alternatywa, jak ktos poleci IDE + GUI to tez przetestuje :)

 

 

Jesli to maja byc najprostrze komunikaty to polecam:

 

-  bash + zenity (najprostrze okienka)

   https://pl.wikipedia.org/wiki/Zenity

 

bash + gtkdialog

     Gtkdialog pozwala na ladne GUI , ale brakuje zaawansowanych mozliwosci gtk i qt,

    brak narzedzia typu RAD do budowania GUI, a pisze sie to troche jak strone w html.

    Link do gtkdialog:

    https://code.google.com/p/gtkdialog/

    Przyklady:

    http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde02-GtkdialogExamples/

 

O ile C /C++ , python , java , wxGlade , gtk , qt raczej przeniesiesz na inne platformy systemowe,

to zenity , gtkdialog chyba raczej nie.

 

 

Albo przeczekaj... :) Jakoś tak pod koniec ubiegłego roku MS odgrażał się, że udostępni .NET dla Open Source.

 

To narazie przyszlosc, mozna poczytac artykul:

http://antyweb.pl/pieklo-zamarzlo-net-w-pelni-opensourceowym-projektem/#

 

Propo dotnet, ostatnio probowalem Genie , to byloby nawe duzo lepsze niz

.NET ale sie to dopiero rozwija :( , poradnikow prawie 0 ,

i chyba korzysta z kompilatora vala, dodatkowo kod mozna przekonwertowac do C.

Jezeli mialbym pisac historie jezyka C dla Linuxa to zrobilbym w ten sposob:

C --> C++ --> Vala (C#) --> Genie

http://sprae.jogger.pl/2009/07/14/genie-python-vala/

 

( jesli kopiujesz przyklady Genie to zwracaj ugwage na wciecia,

w nawiasach kwadratowych musisz podac poprawna wartosc Spacji lub Tabulacji , nie pamietam,

jest to wazne bo gosc mogl dawac przyklady z Tab, natomiast tobie moglo sie wkleic ze Spacjami )

Odnośnik do komentarza
Udostępnij na innych stronach

Ze swojego doświadczenia polecam Qt. Posiada bogatą bazę bibliotek do "wszystkiego" oraz dobrą dokumentację, no i kod napisany raz w samym Qt możesz przenieść na większość popularnych systemów bez zmian. Poza tym C++ to ciągle Ferrari języków programowania ;) Możliwość Qt można zobaczyć instalując pakiet qt-demos.

 

Java z drugiej strony to też jest dla Ciebie opcja bo ma łatwiejszą składnię niż C++, zbliżoną do C#(a raczej na odwrót ) i zdecydowanie łatwiej będzie ci się do niej przesiąść. 

 

Co do środowiska to do Qt-> QtCreator, a do Javy-> Eclipse lub IntelliJ.

Odnośnik do komentarza
Udostępnij na innych stronach

Witajcie

 

najbardziej jestem przychylony do Code::Blocks oraz GNU GCC

przepisałem (niestety po 20 godzinach) jeden komponent programu

i działa, i dobrze

 

 

zależy mi na:

-stabilności

-niezawodności

-braku "dziwnych" reakcji jak "brak odpowiedzi"

 

Jak się ma do czynienia z programowaniem to nauka kolejnego języka nie jest trudna, wymaga czasu.

 

Jaki jest najbardziej niezawodny? Musi być w nim GUI (guziki, wskaźniki, input area).

Czy wybór C++ oraz GNU GCC z Code::Blocks w 64 bitach to dobre rozwiązanie?

Zależy mi aby język nie stał się martwy jak PASCAL, był rozwijany i pojawiały się aktualizacje.

 

Wybór platformy to najważniejsza decyzja, gdyż w trakcie możliwość cofnięcia będzie prawdopodobnie nieodwracalna

Choć linux daje możliwość migracji embeded systems do np. raspberry pi i postawieniu fedory dla arm

np. zastąpienie kamerek systeme kamera + rasberry pi

Nie chodzi nawet o cenę lecz o wielkość urządzeń

Odnośnik do komentarza
Udostępnij na innych stronach

 - GCC to tylko kompilator dla C , C++ i czegos tam jeszcze.

z kompilatora GCC chyba korzystasz tak samo w Code::Blocks i QtCreator

roznica polega we wbudowanym w IDE "GUI designer" do tworzenia GUI.

( kolega wyzej ma racje, QtCreator wyglada lepiej i ma GUI designer niz KDevelop )

         Jakby to powiedziec ... do tworzenia programu mozesz uzyc nawet edytora tekstowego

np. Geany czy Kate, a do utworzenia GUI mozesz uzyc dowolnej bibioteki kompatybilnej z jezykiem

w ktorym piszesz.

( dla C/C++: wxGlade, GTK, QT , lub jeszcze innej )

 

 

Poradnik do C++ w Code::Blocks

https://www.youtube.com/user/MiroslawZelent/playlists?view=50&sort=dd&shelf_id=18

 

- mnie sie wydawalo ze C jest stabilne, ale aplikacje ktore maja 10 lat,

wymagaja lekkich poprawek przed kompilacja, takze z malymi zmianami musisz sie liczyc.

Pomoc do bibliotek mozesz uzyskac np. w ten sposob wpisujac w terminalu:

man ftw

Pokaze on manual do #include <ftw.h>

 

 - Co do Pascala to moze i martwy jezyk, nie polecam ale jako ciekawostke powiem,

  ze jest rozwijany Free Pascal, polecane do niego IDE to Lazarus .

   http://www.freepascal.org/

 

 

 - Moim zdaniem dobrze ze wybrales C++ ,

jezeli chodzi o GUI to QT nie uwazam za stabilne, jest czesto aktualizowane np. teraz jest z QT4 do QT5,

 kod nalezy lekko poprawic by aplikacja sie prawidlowo skompilowala,

  ale duzo ludzi sobie chwali jednak QT, w przeciwienstwie do GTK czy pisania w javie.

  Mysle ze duza zasluga tkwi w dosc fajnym, prostym qt designer.

  Co do wxGlade nie mam zadnego doswiadczenia by skomentowac.

        Jesli jednak chcialbys sprobowac stworzyc GUI w gtk to w Glade to taki designer ( RAD ) dla gtk.

Odnośnik do komentarza
Udostępnij na innych stronach

Skłaniałbym się ku Javie. Tym bardziej, iż natywnie posiada Swing do GUI, a niektórzy korzystają już z JavaFX. Mimo, że Swing raczej poległ na rzecz JFX, to nadal jest stosowany w oprogramowaniu (również tym dla przedsiębiorstw), bo jest sprawdzony i okrzepnięty. Mógłbyś zatem bez grzebania się z dodatkowymi bibliotekami szybko napisać, albo narysować GUI i podczepić akcje. Pisanie w Swingu jest o tyle fajne, że cała magia generowania okien jest pod maską, a do samego pisania GUI operuje się zazwyczaj prostą składnią (na tyle, że choćby proste Hello World w Qt albo nie daj Gtk, wygląda na wyższą sztukę jazdy).

 

Może składnia jest czasem nieco rozwleczona i nie powiem, aby w każdym miejscu Java była super logiczna, jednak przenośność kodu jest naprawdę świetna. Napiszesz na Linuksie - ok, ten sam kod uruchomisz pod Windows, OS X, BSD czy wszędzie, gdzie jest Java (chyba, że kod dotyka jakichś stricte indywidualnych rzeczy dla danego systemu to wiadomo, że trzeba dać korektę).

 

Język jest znany, ma aktualizacje. Do Javy może jednak zniechęcać rozwlekłość kodu - zwykłe pobranie danych z klawiatury i wyświetlenie na ekranie to już mała litania kodu, kiedy np. w Pythonie to nie wiem, chyba 2-3 linie kodu? Na pewno Java nie jest językiem skompresowanego kodu, jak np. Python :) Z drugiej strony pewna manualność pozwala mieć lepszy wgląd w to, co dzieje się w kodzie. Co kto lubi - momentami może to kogoś jednak męczyć.

 

Javę jednak można wziąć pod uwagę w mojej opinii. Co prawda nie jestem zawodowym koderem, ale od czasu do czasu coś tam sobie małego w Javie klepnę (głównie nakładki na rzeczy konsolowe).

Odnośnik do komentarza
Udostępnij na innych stronach

1) soft nie będzie pod windowsa - z racji chociażby słynnego "brak odpowiedzi" w programie

Nie mogę sobie pozwolić że soft się wysypie podczas pracy to dla mnie jakby... katastrofa

 

Java? czemu nie, ma działać na wszystkim i ma być przenośna, nie do tego co potrzebuję. Tutaj ma być wszystko konkretne.

 

Dlaczego platforma windows odpada? ten sam program, system oraz to co ma robić na linuxie x64 wymaga 256mb ram (1gb zainstalowane) i działa bez zarzutu - testowane wiele razy (sam musiałem wygenerować możliwe sytuacji, błędy oraz konflikty)

To samo na windows 8 64 bit wymaga około 3-4gb ram i to szybkiego, a aplikacja ma parę guzików oraz połączenie z siecią. co ciekawe użycie procesora - 16-20% przy linuxie na 64 amd chyba jeden rdzeń 1.7 wynosi 3-5%

 

Dlaczego mam przenosić to na np. win 7 64 bit który wymaga około 2gb ram skoro mogę zrobić to na linuxe i na upartego będzie to 1/4 z tego

 

stabilność i efekt ten sam

 

 

Sorki nie wziąłem pod uwagę OSX ale wybacz, nie kupię ani maca PRO ani macbooka gdyż posiada za bardzo zamkniętą platformę sprzętową

rozbudowa czegokolwiek, dodatnie kart rozszerzeń kończy się na kupowaniu przejściówek USB -> LPT lub USB -> 4x RS-232

 

Gdzie sens i logika? A przenoszenie na unixa mija się z celem. Po moich doświadczeniach coraz mniej jestem przekonany do platform RISC, SPARC, POWER - poza supportem i gwarancją działania nie dają właściwie nic. A i tak jak napiszesz swój soft, nie dają gwarancji. Jak chciałbyś certyfikować to koszta są ogromne. Niestety ale pod każdym względem Linux + x64 + C wygrywa

 

Dlaczego? bo jak coś nie działa to mam źródła

Wszystko inne zamknięto źródłowe i niestety ale w tym przypadku to odgrywa bardzo dużą rolę.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...