Nowe posty

Autor Wątek: Szukam dobrego programu skryptowego...  (Przeczytany 7201 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2562
  • 1709
    • Zobacz profil
Szukam dobrego programu skryptowego...
« dnia: 2012-05-04, 10:58:37 »
Szukam dobrego programu skryptowego...
w którym łatwo się by programowało ( w miarę )
najważniejsze- miało IDE do tworzenia GUI.

Mam jeszcze jedno pytanko , ponieważ sam python chyba nie posiada komend które tworzyłyby GUI, posługuje się bibliotekami np. QT.
Napisany skrypt w pythonie uruchomi GUI ?
Czy tylko programy skompilowane?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

  • Gość
Szukam dobrego programu skryptowego...
« Odpowiedź #1 dnia: 2012-05-04, 12:56:50 »
Wróć. Mieszasz podstawowe pojęcia.

Jeżeli chcesz mieć graficzny interfejs, to najlepiej jest wykorzystać GTK+ lub Qt, ewentualnie wxWidgets. Dwa pierwsze (trzeciego nie chciało mi się sprawdzać) posiadają biblioteki dla wszystkich najpopularniejszych języków programowania, zarówno skryptowych, jak i kompilowanych. Interfejs rysowany przy pomocy GTK+ lub Qt możesz stworzyć nawet przy pomocy PHP, chociaż pewnie nie jest to najmądrzejszy pomysł. Samo kompilowanie nie jest w żaden sposób powiązane z graficznym interfejsem.

Języki skryptowe możesz skompilować, dzięki czemu będą szybsze/mniejsze/trudniejsze do odczytania. Chociaż jeżeli nie masz jakieś dobrego powodu, żeby to robić, to lepiej tego nie robić.

IDE oznacza Integrated development environment, czyli zintegrowane środowisko programistyczne. IDE to specjalny program, który ułatwia tworzenie programów. Takie programy mają wiele mniej lub bardziej przydatnych funkcji (zestawianie plików w projekt, okienko debugowania, automatyczne przedstawianie dokumentacji, sprawdzanie poprawności argumentów przekazywanych funkcjom i wiele, wiele innych). Niemniej samo używane IDE jest całkowicie niezależne od języka programowania, którego używasz (chociaż niektóre są dedykowane określonym językom programowania), a już tym bardziej jest niezależne od biblioteki, przy pomocy której chcesz rysować interfejs graficzny swojego programu.

Czyli:
- wybierasz język programowania, jaki chcesz. python, perl i ruby są dobre, jeżeli chcesz pisać w języku interpretowanym. Jeżeli wolisz języki kompilowane, to pewnie C, C++, Java?
- wybierasz bibliotekę graficzną, jaką chcesz. GTK+ oraz Qt są najlepszymi wyborami na początek.
- całość piszesz w programie, w jakim chcesz. Możesz wykorzystać jakieś IDE, możesz jakiś mniej (geany) lub bardziej (vim, emacs) zaawansowany edytor, możesz jakiś prosty notatnik albo nawet Writera z pakietu Office (chociaż to ostatnie jest dość karkołomne).

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2562
  • 1709
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #2 dnia: 2012-05-04, 15:37:23 »
IDE- dla mnie to narzędzie , dzięki niemu można łatwiej w sposób graficzny zrobić GUI aplikacji, nie kóre  IDE posiadają także edytor tekstowy i kompilator, by od razu w nim pisać programy.

"Niemniej samo używane IDE jest całkowicie niezależne od języka programowania, którego używasz (chociaż niektóre są dedykowane określonym językom programowania)"

Nie wiedziałem, raczej spotkałem się z tym drugim , że IDE jest dedykowane danemu językowi, i to od IDE zależy na jaki język potrafi przetłumaczyć zrobione GUI.
Moge tylko podejżewać , ze w Qt zostały napisane takie biblioteki , żeby wyeksportować kod np. do pythona i na odwrót.
Albo inaczej, to python napisał bibioteke pod Qt ( py-Qt ) , bo mu sie spodobała .
W linku na dole pisze z jakimi językami Qt jest kompatybilne.
http://pl.wikipedia.org/wiki/Qt

Co do Qt , ściągłem sobie Qt Designer ( IDE ) i mam z nim problem ,
nie widze tam ani edytora, jedynie co moge w nim zrobić to zapisać projekt do pliku
.ui  . I co dalej moge z nim zrobić?
Np. nadać przyciskom polecenia i skompilować , lub zeby działał jako skrypt w linuxie.
Próbowałem .ui kompilować z konsoli :
qmake -project
qmake
 make
/usr/lib/qt4/bin/uic untitled.ui -o ui_untitled.h
g++ -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -o Dokumenty     -L/usr/lib -lQtGui -L/usr/lib -lQtCore -lpthread
make: g++: Polecenie nie znalezione
make: *** [Dokumenty] Błąd 127

Albo inaczej:
Jak użyć np. python, by skompilować lub użyć w skrypcie GUI zrobione w Qt Designer ?

----------------
Znalazłem jakiś inny poradnik pdf, czyli do Qt musze miec
- Qt Creator ( studio które ma Qt Designer też )
 - Qt Assistant ( jakies pliki z pomocą)
- Qt Designer ( IDE )
 - Qt Liguist ( nie wiem co to )
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Ksanderon

  • Gość
Szukam dobrego programu skryptowego...
« Odpowiedź #3 dnia: 2012-05-04, 19:30:33 »
Rozumiem, że miałeś wcześniej do czynienia z jakimś zabawnym MFC w Visual Studio etc... -w takim razie na prawdę współczuje krzywdy jaką Ci wyrządzono.

IDE to nie jakiś PowerPoint żeby sobie klikać. PowerPointa zostaw sekretarkom.

Integrated Development Environment to zdecydowanie nie to samo co Rapid Application Development, o którym mniej więcej mówisz! IDE, tak jak napisał minio nie służy do jednej czynności(czy nawet kilku) ale musi pozwalać zrobić WSZYSTKO. W visual studio, na upartego możesz nie klikać tylko pisać interfejsy w edytorze ale... np. takie MFC jest tak gównianą biblioteką, że NAPISANIE czegoś bardziej skomplikowanego niż kalkulator za pierwszym razem bez błędów jest istnym cudem, a kod samego interfejsu takiego kalkulatora idzie w dziesiątki jeśli nie setki kilobajtów(i weź później coś zmień- szczególnie gdy ten kod wygeneruje się sam i jest strasznie syfnym spaghetti).

Dając kontrprzykład np. w GTKmm(nakładka do GTK zapewniająca pełną obiektowość tej biblioteki dla języka C++, którą bardzo lubię), identyczna aplikacja mieści się w jakichś 200 linijkach kodu?

Na Linuksie jest kilka kompilatorów, wiele edytorów i wiele bibliotek oraz narzędzi(w tym programów RAD(o które ci się rozchodzi)) do wyboru, które mogą być ze sobą używane w dowolnej konfiguracji. To od ciebie zależy co będzie stanowić twoje IDE- wybierasz to co uważasz za najlepsze- nie to co ci wciśnie taki czy inny monopolista bez pomysłu.

Taka drobna dygresja na temat pythona i sporej części innych języków interpretowanych- odnośnie modułów/rozszerzeń i innych takich, które nie stanowią bezpośrednio części języka- interpreter ma zwykle gotową skompilowaną bibliotekę współdzieloną, napisana np. w C, którą dołącza do siebie, gdy zachodzi taka potrzeba- więc programowanie np. GTK w Pythonie i C++ jest prawie identyczne.

Co może być dla ciebie zaskoczeniem- tego samego programu RAD używa się gdy pisze się coś w Perlu, LUA czy C- a dla chętnych nawet w JS.

ps. zapewniam, że tak czy siak aplikacja rad jest tylko urozmaiceniem, dodatkiem a nie ważną częścią biblioteki do robienia GUI. Po pierwsze niektórych spaw nie da się wyklinać, po drugie to tylko generator, więc generuje syf a nie kod, po trzecie i najważniejsze samo zaprojektowanie interfejsu to ułamek czasu spędzonego nad projektem, będący jedną z głównych składowych oceny końcowej aplikacji, więc warto nie robić tego po łebkach- wtedy dodanie bądź zmienienie czegoś potrwa chwile a nie wieki.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2562
  • 1709
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #4 dnia: 2012-05-05, 01:15:34 »
"Na Linuksie jest kilka kompilatorów, wiele edytorów i wiele bibliotek oraz narzędzi"

Ja bym chciał połączyć RAD z prostymi czynnościami ( choć pewnie to tylko marzenie ).
Np. dla mnie pygame to nie biblioteka , to gotowy silnik gry,
biblioteka byłaby gdyby pomagała tworzyć rodzaje silników gry.
 Chociaż w pewnym sensie to biblioteka , bo używamy komend jak ze słownika .
Różnica miedzy zwykłą biblioteką polega na tym , ze wszystkie komendy są zazwyczaj w 1 pliku i moge sobie podgladać i zmieniać , w przypadku pygame jest to trudniejsze i jedynym znanym mi wyjściem jest korzystanie z dokumentacji.

Ja chce tworzyć tylko proste aplikacje graficzne.
W jaki sposób np. zacząć je robić?

Wspomniałem w ten sposób o IDE, ponieważ w jakimś jezyku C, był użyty po raz pierwszy, jego główną cechą , własnie było tworzenie samego GUI.
I najczesciej słysząc o IDE rozumiem , ze owe narzedzie do tworzenia musi zawierać. Przykładowo kiedyś python długo nie miał  " Narzedzia do tworzenia GUI ". Ostatnio dopiero znalazłem http://eric-ide.python-projects.org/
dokumentacji po polsku nie stety nie znalazłem.

Co do qt IDE
tez wyglada fajnie ( niestety obiektowosc to nie moja specjalnosc )
ale musiałbym bym bisać w C++, tak?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Ksanderon

  • Gość
Szukam dobrego programu skryptowego...
« Odpowiedź #5 dnia: 2012-05-05, 12:45:30 »
Inaczej. Większość dobrych bibliotek na Linuksie jest napisana w C,(nowsze czasem w C++) - jest to od zarania dziejów Linuksa podstawowy język(tak mi się wydaje- jestem z '92(gówniarz)- ale tak na oko to wygląda) i raczej był to bardzo dobry wybór, z uwagi na jego specyfikę. Większość przydatnych bibliotek jest jednak przeportowana dla innych języków.

Tak więc istnieje np. PyGTK czyli GTK dla Pythona, pomimo, że pierwotnie biblioteka GTK była napisana dla C(obiektowość dzięki GObject). Sam Python napisany jest w C- inne implementacje na tej się wzorują. Znając np. GTK dla języka C bardzo szybko opanujesz gtkmm lub PyGTK i na odwrót, ponieważ sam interfejs programistyczny jest identyczny, różnice wynikają jedynie z charakterystyki języka. Np. w C++ mamy nacisk na hermetyzację, w Pythonie nijak go nie ma.

PyGame to jest coś w rodzaju silnika-jest zbiorem kilku bibliotek powiązanych se sobą przez niego.
Jeśli chcesz pisać własny to zainteresuj się bardziej niskopoziomowymi bibliotekami np. PyOpenGL+PyGTK.

"zazwyczaj w 1 pliku i moge sobie podgladać i zmieniać"- STL też jest biblioteką a jakoś chyba nie podglądasz i nie zmieniasz co? Jak biblioteka ma jeden plik to to raczej biblioteka nie jest- biblioteki zgodnie z nazwą często składają się z setek jeśli nie tysięcy plików. Zawsze należy korzystać głównie z dokumentacji i oficjalnych manuali.

"http://eric-ide.python-projects.org/" to nie jest żadne narzędzie RAD ani IDE tylko zwykły, nadmiernie rozbujały edytor programistyczny jakich cała masa, przeznaczony głównie do Pythona.

GUI jest wprost idealnym materiałem do pisania go obiektowo, więc musisz się z przynajmniej podstawami zaznajomić- choć nie jest specjalnie ważne w jakim języku. Nikt nie wymaga abyś pisał w języku c++ w qt- możesz w dowolnym dla którego są porty, choć zawsze qt w c++ będzie najlepszym wyborem do nauki.

Ja tak czy siak polecam GTKmm- może po polsku materiałów nie ma ale za to dokumentacja na stronie gnome jest świetna, nawet google translator świetnie sobie radzi, mnóstwo dobrych przykładów i ogólnie prosta, jeśli nabędzie się kilka podstawowych nawyków- do tego stopnia, że można w trakcie pisania czegoś większego uczyć się na bieżąco.

Z tym, że kto inny może powiedzieć o QT mniej-więcej to samo.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2562
  • 1709
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #6 dnia: 2012-05-05, 16:43:58 »
Dzięki :)
Co do
"http://eric-ide.python-projects.org/" to nie jest żadne narzędzie RAD ani IDE tylko zwykły, nadmiernie rozbujały edytor programistyczny jakich cała masa.
_
Ja tam nie wiem, tak pisze ze to IDE .
 Edytor ma , kompilator ma , jako wtyczke ma też Zaimportowane Qt Designer.
Jest też wersja podobna , ale płatna.
jako edytora to można zwykły notatnik użyć.
Kate jest fajny
-kolorowanie skladni, numerowanie lini ( przydatne gdy kompilator wypluwa błąd w danych liniach ), zaznaczanie, brakuje mi tylko zawijanie danych fragmentów , zeby sie nie pogubic w duzym kodzie. Niestety pewnie nie we wszystkich srodowiskach pewnie działa.

Jeszcze jedno pytanko mi się nasuwa...
Jak inni to robią że ich GUI ( nawet cały program ) działa pod różnymi srodowiskami
graficznymi,  np
http://www.dobreprogramy.pl/Spox5/Burgmanager-latwe-zarzadzanie-GRUB-za-pomoca-przyjemnego-GUI,19319.html

a np.
edytor Kate sobie nie radzi?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2840
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #7 dnia: 2012-05-05, 20:31:47 »
Do pipy jasnej, bo już nie strzymałem.

1) Tele, pieprzysz pojęcia i do języka podchodzisz od du*y strony. Pierw popatrz na język, popatrz na przykłady, napisz parę działających rzeczy w notatniku i jak opanujesz język ewentualnie szukaj jakiegoś IDE. A nie pierw klikasz w RADzie aplikację bez zrozumienia a porem myślisz "o co tu k*a chodzi".

2) Pisanie w QT może iść dwoma ścieżkami:

a) Robisz w klikanym edytorze graficznym plik UI z interfejsem i potem bindujesz akcje do komponentów graficznych:  "ścieżka Delphi" - za Delphi to powinni kogoś na stosie spalić. Delphi i C++ builder to narzędzia do szybkiego prototypowania aplikacji, niestety wszyscy orzekli że prototyp to świetny wyrób końcowy. Dowód na g*nianość Delphi to to, że bez problemu konwertuje z CP1250 bajty 0x81, 0x83, 0x88, 0x90 i 0x98 na UTF16, mimo że bajty te w CP1250 nie są zdefiniowane i nie odpowiadają im żadne kody UTF16. A ja szukałem błędu w libiconv, że tych samych danych za chiny nie konwertuje a śmieć w Delphi tak... A okazało się, że jednak iconv ma rację... :)

b) Robisz UI bezpośrednio w kodzie programu ("ścieżka Javy"). Więcej pracy, ale pozwala uzyskać efekty nie przewidziane przez kreatory graficzne.

Jakbyś zadał sobie trud i poszukał bindingu QT i Pythona (nazywa się... niespodzianka... PyQT), to byś doczytał, że obsługuje obie ścieżki, z czego "a" w ten sposób, że z pliku UI generuje kod Pythona odrabiając za ciebie ścieżkę "b". " PyQt is able to generate Python code from Qt Designer"

Przykładowy prosty kod ścieżką b (tak, wszystko w jednym pliku py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial

This program creates a quit
button. When we press the button,
the application terminates.

author: Jan Bodnar
website: zetcode.com
last edited: October 2011
"""

import sys
from PyQt4 import QtGui, QtCore


class Example(QtGui.QWidget):
   
    def __init__(self):
        super(Example, self).__init__()
       
        self.initUI()
       
    def initUI(self):              
       
        qbtn = QtGui.QPushButton('Quit', self)
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)      
       
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Quit button')    
        self.show()
       
def main():
   
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
Pi*oko to samo (funkcjonalnie) w Rubym:
require 'Qt4'

app = Qt::Application.new(ARGV)

quit = Qt::PushButton.new('Quit')
quit.resize(75, 30)
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))

Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))

quit.show()
app.exec()
Jak widziałeś jakiś kod C++ w QT to kod Rubiego bardziej przypomina natywne aplikacje QT niż Pythonowy (taki model, jak Rubiego nazywa się to "thin wrapper", model Pythona to "thick wrapper")
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2840
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #8 dnia: 2012-05-05, 20:47:28 »
Cytat: tele
Jeszcze jedno pytanko mi się nasuwa...
Jak inni to robią że ich GUI ( nawet cały program ) działa pod różnymi srodowiskami
graficznymi
* Skrypty - póki interpreter dostarcza te same usługi, to skryptu nie obchodzi OS na którym chodzi. Dlatego skrypty PyQT/RubyQT/CokolwekQT będą działać, jak długo na dany OS dostępny jest interpreter danego języka z bindingiem do QT. Oczywiście tylko do chwili, gdy w skrypcie nie wykorzystasz choć jednej konstrukcji natywnej dla danego systemu, typu IOCTLe albo grzebanie po systemie plików typu /dev albo /proc.

* Kompilowane - jak długo w programie korzystasz tylko z funkcji i klas należących do QT i standardu C/C++, tak długo program bez zmian w kodzie źródłowym da się skompilować i uruchomić na dowolnym OSie na który powstała biblioteka QT. Jest to nazywane "zgodnością na warstwie kodu źródłowego". Czyli piszesz raz i ten sam kod kompilujesz na Lin, Win, Mac i na co tam jeszcze QT zrobili.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2562
  • 1709
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #9 dnia: 2012-05-05, 23:21:57 »
Polubiłem RAD :D jeśli to czego używałem do tego należy.

"Tele, pieprzysz pojęcia i do języka podchodzisz od du*y strony."

Chciałbym na głęboką wode, pisanie skryptów, które działają tylko w konsoli,
 raczej mnie nie fascynuje.

Jak zobaczyłem kalkulator w C++ to sie przeraziłem , dużo kodu w prostym programie.
Masz rację musze poszukać gotowe przykłady, im więcej tym lepiej.
Twój kod w Rubym wygląda na bardziej prosty i mniejszy.

"że z pliku UI generuje kod Pythona"
Może do Ruby też się da? ( do pythona się troszke zraziłem prawie jak ty do Delphi )
Spróbuję. :-)
http://zetcode.com/tutorials/qtrubytutorial/

Dziękuję za pomoc ! :)
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2840
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Szukam dobrego programu skryptowego...
« Odpowiedź #10 dnia: 2012-05-06, 17:06:59 »
Cytat: tele
Chciałbym na głęboką wode, pisanie skryptów, które działają tylko w konsoli,
 raczej mnie nie fascynuje.
Zanim wyśmiejesz konsolę, zrób jakiś niebanalny program w ncurses albo slang. Sam robię aplikacje na embedy i jedynym kontaktem z użytkownikiem jest LCD 20x4, cztery LEDy dwukolorowe i klawiatura kursory+ok+cancel (Crystalfontz CFA-635 to be specific).

Pomijając Javę, masz 3 popularne, darmowe międzysystemowe toolkity do aplikacji: QT, GTK i WX Widgets.  GTK powstał w C (wspomniana nakładka GTKmm owija to w C++). QT i WX powstały od razu w C++.

Do każdego z nich dostępne są bindingi do wszystkich popularnych języków skryptowych i większości kompilowanych. Z tych wszystkich najbardziej rozbudowane jest QT, bo ma własne interfejsy baz danych, wbudowaną przeglądarkę WWW, wszystkie narzędzia do druku, sieci, grafiki 3D i innych dobroci, przez co 99% aplikacji zaspokoi się natywnymi rozwiązaniami dostarczanymi przez QT. Dodatkowo QT jest podstawą nowego Symbiana oraz jest dostępne na Andka (nie wiem jak Bada i iOS), dając dostęp do platform mobilnych.

Z moich doświadczeń - dla początkującego programisty bardziej przyjazny jest Python. Ruby ma poważne naleciałości funkcjonalne, zwłaszcza nagminne używanie domknięć (jestem zdziwiony, że binding QT tego nie zaadoptował)
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy