Jaka technologia progrmowania?

0

Z pośród wielu systemów operacyjnych, wydaje mi się, że są trzy najczęściej używane: Windows (od XP wzwyż), Linux (pod różnymi postaciami zwanymi dystrybucjami) i Mac OS X.

Zauważyłem, że są różne technologie tworzenia oprogramowania, które mają zalety i wady:

  1. Windows API: Tworzy go większość kompilatorów dla Windows. Aby uruchomić w Linuxie, trzeba zainstalować Wine, a żeby uruchomić w MacOS, to trzeba zainstalować Darwine (wersja Wine przewidziana dla MacOS).
  • Jeden plik EXE na wszystkie systemy
  • W Windows nie potrzeba dodatkowego oprogramowania ani bibliotek
  • Niektóre dystrybucje Linuxa już posiadają Wine
  • Wine i Darwine nie są w 100% kompatybilne z Windows API, dlatego należy testować działanie programu przynajmniej w Linuxie, a najlepiej we wszystkich systemach
  • Sam kompilator może nie działać do końca dobrze w systemach innych niż Windows (jeżeli uruchamiany jest przez Wine)
  1. .NET/Mono: Aby uruchomić w systemie Windows, należy zainstalować .NET, a w pozostałych systemach trzeba zainstalować Mono (istnieje również wersja Mono dla Windows)
  • Jeden plik EXE na wszystkie systemy
  • Mono jest prawie w 100% kompatybilny z .NET 2.0, trzeba testować działanie
  • Plik EXE zawiera kod pośredni, a nie maszynowy, przez co teoretycznie może działać na każdym komputerze
  • Język C# (stworzony specjalne dla .NET) jest stosunkowo prosty i są bezpłatne kompilatory
  • Mono zapewnia tylko częściową kompatybilność z .NET 3.5
  • Biblioteka .NET nie zawiera GTK# i trzeba GTK# doinstalować osobno
  1. Java:
  • Java istnieje w wersji dla wszystkich systemów operacyjnych
  • 100% gwarancji działania na wszystkich systemach
  • Kompilatory Java są bezpłatne
  • Podobno Java może być mniej wydajna
  • Ograniczenia wynikające z maszyny wirtualnej Javy
  1. QT:
  • 100% gwarancji działania na wszystkich systemach operacyjnych
  • W systemie docelowym nie potrzeba instalować dodatkowych bibliotek do uruchamiania programów
  • Wymaga tworzenia trzech osobnych wersji programu
  1. Lazarus:
    Te same zalety i wady, jak QT.

Którą technologię stosujecie do tworzenia programów? Jeżeli chcecie rozpowszechniać program, to czy testujecie dokładnie działanie we wszystkich trzech systemach operacyjnych?

0

Niezwykle rzadko wymagane jest działanie programu na 3 systemach operacyjnych, najczęściej tworzy się pod jeden konkretny system. Jeżeli chcesz, aby ta sama skompilowana wersja działała na wszystkich systemach to pozostaje ci tylko java - wine i mono litościwie pominę milczeniem.

0

Największą wadą Javy IMO jest to, że w dowolnej chwili może odpalić się Garbage Collector, który może zatrzymać pracę programu nawet na kilkaset milisekund. Wydajność jest OK, w JDK 7 będzie jeszcze lepiej, praktycznie zrówna się z natywnymi aplikacjami.

0
othello napisał(a)

mono litościwie pominę milczeniem.

Korzystam m.in. z tego programu i gdybym nie przejrzał dokumentacji, nie wiedziałbym nawet, że pisany jest w C#.
http://gnome-subtitles.sourceforge.net/screenshots
Szkoda tylko, że ze względu na użyte biblioteki nie jest kompatybilny z Windowsem, ale pewnie port też nie byłby taki trudny do zrealizowania.

0
Rev.pl napisał(a)
othello napisał(a)

mono litościwie pominę milczeniem.

Korzystam m.in. z tego programu i gdybym nie przejrzał dokumentacji, nie wiedziałbym nawet, że pisany jest w C#.
http://gnome-subtitles.sourceforge.net/screenshots
Szkoda tylko, że ze względu na użyte biblioteki nie jest kompatybilny z Windowsem, ale pewnie port też nie byłby taki trudny do zrealizowania.

Ja tego programu nie znam, ale tak pokrótce spojrzałem i zauważyłem, że wykorzystuje GTK+ i GTK#. Wydaje mi się, że istnieje wersja tych bibliotek dla Windows.

W ogóle, co do Mono, to ja pisałem pracę inżynierską, to ja zwracałem uwagę na wieloplatformowość, z tym, że sprawdzałem w Windows i Linux, do MacOS nie miałem dostępu. Po napisaniu dla Windows, korzystając z Windows Forms, to jak pierwszy raz odpaliłem na Linuxie z najnowszą wersją Mono, to w dużej mierze działało, wymagane były drobne poprawki, ponieważ są błędy w kodach przekazywanych do metod KeyDown i KeyUp, ale nie było problemu, żeby pogodzić i prawidłowe działanie w Windows i błędne kody w Linux. Błąd polega na tym, że do niektórych kodów dodawana jest wartość 65536 lub jej wielokrotność. Generalnie, to bez żadnych problemów działa w Mono. Pod Windows pisałem w Visual Studio 2005.

Co do .NET i C#, to dla aplikacji okienkowej są dwie biblioteki. Jedna, to Windows Forms, a druga, to GTK#. Przy czym VS obsługuje tylko Windows Forms, a MonoDevelop obsługuje tylko GTK#, przy czym można też kompilować aplikację dla Windows Forms, ale nie ma graficznej edycji formularzy.

Natomiast Mono nie obsługuje Windows Presentation Foundation, więc aplikacja napisana w WPF nie ruszy.

Co do wymagań działania w różnych systemach, to moim zdaniem jest tak, że jak się pisze na własne potrzeby, to najważniejsze, żeby działał w tym systemie, którego się używa, natomiast, jeżeli się pisze w celu rozpowszechniania (nieistotne, czy bezpłatnie, czy odpłatnie, czy open source) lub jako praca dyplomowa, to program powinien działać na wszystkich popularnych systemach (obojętnie, czy poprzez uruchamianie binarki na różnych systemach, czy poprzez udostępnienie 3 wersji, tego samego programu). Autor tematu akurat wymienił 3 najczęściej używane systemy operacyjne.

0
andrzejlisek napisał(a)

jeżeli się pisze w celu rozpowszechniania (nieistotne, czy bezpłatnie, czy odpłatnie, czy open source) lub jako praca dyplomowa, to program powinien działać na wszystkich popularnych systemach

W praktyce Windows ma 95% rynku, więc jeśli producent wydaje program wyłącznie pod Windows, to wiele nie traci.

0

Właśnie mam podobny problem. Umiem podstawowo programować w C++ i visual Basicu(2005). Właśnie poszerzam swoją wiedzę o nich a także chciałbym się nauczyć javy. Co powinienem wybrać do nauki programowania w windows w c++ ? .NET czy Windows API ? Chodzi mi o jakąś przyszłościową technologie

0
matiszak napisał(a)

Właśnie mam podobny problem. Umiem podstawowo programować w C++ i visual Basicu(2005). Właśnie poszerzam swoją wiedzę o nich a także chciałbym się nauczyć javy. Co powinienem wybrać do nauki programowania w windows w c++ ? .NET czy Windows API ? Chodzi mi o jakąś przyszłościową technologie

Myślę, że warto pisać dla .NET. Biblioteka .NET 2.0 (ponoć Mono obsługuje ją niemal w 100%) posiada w sobie większość funkcji ułatwiających programowanie. A jeżeli interesuje Ciebie tylko i wyłącznie Windows, to .NET 3.5 posiada jeszcze więcej gotowców, które ułatwiają i skracają czas potrzebny na implementację. Do tych gotowców należą między innymi obliczanie MD5, szyfrowanie AES, różne operacje matematyczne, obsługa baz danych i dużo więcej. Z tych gotowców można korzystać w dowolnym języku dla .NET.

Co do języka, to C++ na .NET i zwykły C++ się trochę różnią. Myślę, że warto zapoznać się z C#, który moim zdaniem jest łatwiejszy niż C++, dodatkową zaletą jest to, że C# jest podobny do Javy do tego stopnia, że część algorytmów można kopiować między Javą a C# bez dokonywania zmian w kodzie, tym bardziej, że Java też Ciebie interesuje.

0

A jeżeli zdecydowałbym się na c++.NET lub c#.NET to jakie środowisko programistyczne ? Visual Studio ?
Bo w visual jest visual c++ i visual c# i zastanawiam się właśnie czy to inna nazwa c++.NET i c#.NET. Umieć programować to jedno a połapać się w tych wszystkich modyfikacjach językó, interfejsów itp to drugie...

0
matiszak napisał(a)

A jeżeli zdecydowałbym się na c++.NET lub c#.NET to jakie środowisko programistyczne ? Visual Studio ?
Bo w visual jest visual c++ i visual c# i zastanawiam się właśnie czy to inna nazwa c++.NET i c#.NET. Umieć programować to jedno a połapać się w tych wszystkich modyfikacjach językó, interfejsów itp to drugie...

MS Visual Studio 2005 i nowsze umożliwia programowanie zarówno w C++, jak i w C#, oba języki są kompilowane do .NET.

0
andrzejlisek napisał(a)

lub jako praca dyplomowa, to program powinien działać na wszystkich popularnych systemach

Znaczy aplikacja webowa też ma się dać odpalać na serwerach pracujących pod kontrolą każdego z popularnych systemów?

0
somekind napisał(a)
andrzejlisek napisał(a)

lub jako praca dyplomowa, to program powinien działać na wszystkich popularnych systemach

Znaczy aplikacja webowa też ma się dać odpalać na serwerach pracujących pod kontrolą każdego z popularnych systemów?

Miałem na mysli tylko zwykłe programy. Aplikacja webowa to zupełnie inna sprawa.

0
andrzejlisek napisał(a)

Miałem na mysli tylko zwykłe programy. Aplikacja webowa to zupełnie inna sprawa.

Ok.
A dlaczego niby program będący częścią pracy dyplomowej miałby dawać się uruchamiać na każdym systemie?

0
andrzejlisek napisał(a)

MS Visual Studio 2005 i nowsze umożliwia programowanie zarówno w C++, jak i w C#, oba języki są kompilowane do .NET.
Nie znam kompilatora C++ do CIL. C++/CLI to zupełnie inny język.

0

Jeszcze jedno pytanko ;)
Czy miał ktoś może styczność z tą(http://helion.pl/ksiazki/cshnet.htm) książką ? Czy znając c++ naucze się z niej c#.net w stopniu pozwalającym na programowanie w windowsie aplikacji okienkowych czy do tego też jakaś oddzielna książka ;p ?

0

To jest najlepsza znana mi książka do C# w języku polskim i mogę ją polecić z czystym sumieniem.
Nie musisz znać żadnego innego języka, żeby się z niej nauczyć C#. A kontrolki Windows Forms są w niej dość dokładnie opisane.

0

Z własnego doświadczenia powiem że Lazarus, kody źródłowe bez problemu sie przenośi pomiedzy platformami systemowymi, oczywiście pisząc aplikacje zgodnie z zaleceniami.

0

Zakladajac ze nie chcesz kupic licencji, musisz zainstalowac Visual Studio C++ Express Edition lub Visual Studio C# Express Edition, badz obydwie. Ale jesli chcesz miec bardziej przejzyste IDE uzyj Java + Eclipse... chociaz VS tez nie jest zle, ale przyda sie pare pluginow. Jak ANT itd.

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