Jaka technologia progrmowania?

Odpowiedz Nowy wątek
2010-01-31 13:19
xxxxxxx
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)
  2. .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
  3. 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
  4. 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
  5. 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?

Pozostało 580 znaków

2010-01-31 13:56
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.

Pozostało 580 znaków

2010-01-31 14:10
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.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2010-01-31 19:54
Rev
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.


Pozostało 580 znaków

2010-01-31 21:35
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.

Pozostało 580 znaków

2010-01-31 22:01
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.

Pozostało 580 znaków

2010-01-31 22:44
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

Pozostało 580 znaków

2010-01-31 23:14
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.

Pozostało 580 znaków

2010-01-31 23:18
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...

Pozostało 580 znaków

2010-02-01 00:21
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.

Pozostało 580 znaków

2010-02-01 00:48
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?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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