Dobry język dla ekonomisty

0

Chciałbym się poradzić szanownych kolegów z większym doświadczeniem.

Jestem ekonomistą. Aby ułatwić swoją pracę, chciałbym nauczyć się tworzyć programy komputerowe o następującym przeznaczeniu:

  • interface do MS SQL
  • możliwość zarówno odczytu jak i do zapisu do bazy
  • praca wyłącznie w środowisku Windows
  • łatwe tworzenie GUI.

Generalnie chciałbym, aby język ten był dość prosty. Jestem ekonomistą a nie inżynierem i chciałbym, aby tak pozostało. I to jest istota kontekstu mojego pytania. Języka będę się uczył i praktykował niejako przy okazji, a nie jako główne źródło dochodu. Chciałbym dokonać optymalnego wyboru, a idealnym stosunkiem ceny do jakości, to znaczy chcę zainwestować jak najmniej czasu, aby zobaczyć pierwsze efekty, lecz chciałbym , aby język był mimo wszystko funkcjonalny.

Który język wybrać, aby nie poświęcać zbyt dużo czasu na techniczną stronę zagadnienia. Zerknąłem na następujące możliwości:

  • Object Pascal przy użyciu środowiska Lazarus - ładny, logiczny język. Martwi mnie jednak niszowość tego rozwiązania, brak samouczków, forów itp. Boję się, że utknę w ślepym zaułku i tam pozostanę.

  • Python - ładna składnia, przejrzysty. Martwi trochę prymarne przeznaczenie tego języka, który głównie jest wykorzystywany dla backendu na stronach internetowych, a nie jako aplikacje w środowisku Windows, zwłaszcza bazodanowe. Nie chcę być jedyny we wszechświecie tworząc takie rozwiązania. Może się okazać, że nie ma bibiotek lub ma stare biblioteki dla typowych rozwiązań, tj. tworzenie PDF, plików Excel, komunikacja z MS SQL, wydruki.

  • Visual Basic - wydaje się, że pasuje jak ulał, ale aktualne Visual Studio wymusza znajomość XAML.

  • C#/Java - trudny. Długo się czeka na pierwsze efekty. Wezmę się za to, jeśli nie będzie innego wyjścia.

inne?

Będę wdzięczny za poradę.

0

Python, Ruby, Java/.NET , R.

1
  1. chyba żartujesz pisząc, że do delphi nie ma tutoriali/pomocy/for.
  2. python - nie wiem, nie znam się
  3. VB jest raczej niszowym językiem. To tutaj możesz mieć problemy ze znalezieniem info o danym problemie w necie.
  4. C# jeśli podoba Ci się Object Pascal to nie rozumiem, dlaczego uważasz, że C# jest trudny.
  5. JAVA - nie moja bajka

Ja bym w Twoim przypadku jednak poszedł w stronę C# bo
a) MSSQL to jego "naturalny przyjaciel"
b) masz za darmo VS Express
c) wcale nie trzeba znać XAMLa - masz WinForms gdzie formatki składa się identycznie jak w Delphi
d) praktycznie każde problemy od podstaw do średnio zaawansowanych możesz rozwiązać przy użyciu googla/for/tutoriali

0
abrakadaber napisał(a):
  1. chyba żartujesz pisząc, że do delphi nie ma tutoriali/pomocy/for.

Nie ma za dużo do Lazarusa. Delphi jest płatne i drogie.

0
abrakadaber napisał(a):
  1. C# jeśli podoba Ci się Object Pascal to nie rozumiem, dlaczego uważasz, że C# jest trudny.

Osobiście nie mam zdania, kieruję się opiniami innych. Zanim założyłem wątek, spędziłem 5 godzin na czytaniu innych wypowiedzi. Widzę tendencję, że programiści za najtrudniejszy język uważają C++, po nim Java/C#. Za łatwiejsze uchodzi OPascal, za najłatwiejszy Python.

Mi by chodziło o coś takiego jak Visual Basic for Application do Accessa. Niestety nie znalazłem takich rozwiązań dla MS SQL, więc muszę się nauczyć jakiegoś języka. Jeśli chodzi o zupełne ABC programowania, to nie mam wątpliwości: Python najłatwiejszy. Ale tu nie chodzi o napisanie jednej instrukcji warunkowej, tylko o stworzenie funkcjonalnego interface do bazy danych MS SQL. Na wyższym poziomie Python może już nie być taki łatwy, jeśli okaże się, że trzeba w nim wszystko wyrzeźbić ręcznie, począwszy do database grid na module do obsługi plików excel kończąc.

Dlatego mam nadzieję, że ktoś, kto zjadł na tym zęby, oświeci mnie, przy czym napocę się najmniej. Sorry, że mam taką przyziemną motywację, ale kasę robię na czymś innym, a to ma mi tylko nieco ułatwić życie.

0

lazarus to jest tylko i wyłączenie IDE darmowe mające w domyśle zastąpić D7 (jest na nim wzorowane). 99% tutoriali do delphi będzie rozwiązywało problemy w FreePascala.
Jak pisałem - python i java to nie moja bajka więc się nie wypowiem co do łatwości. Natomiast wg mnie Delphi i C# mają podobny stopień "łatwości" tworzenia interfejsu (mowa o WinForms dla c#), wręcz powiedział bym, że identycznie to wygląda.

0

Łatwe tworzenie gui=rysowanie okienek, czy chodzi o wygodne API?

EDIT: w Delphi/Lazarusa bym się nie pchał bo to staroć/nisza. Jeśli nie czujesz się już z Pascalem jakoś bardzo komfortowo to w moim odczuciu nie warto się w to ładować.

Docelowo IMHO dobre będzie coś ze stajni Microsoftu (czy vb czy C#), ew. jak nie to Python, ale tam znowu tak łatwo sobie gui nie wymalujesz.

Co MsSQLa w Pythonie:
http://www.pymssql.org/en/latest/

0
alagner napisał(a):

ew. jak nie to Python, ale tam znowu tak łatwo sobie gui nie wymalujesz.

Co MsSQLa w Pythonie:
http://www.pymssql.org/en/latest/

Python jest dusicielem, więc faktycznie nie gryzie na początku. Ale zwróć uwagę, że biblioteka, którą polecasz jest do Pythona 2. I tu pojawia się pierwszy smaczek Pythona. Nie jest on zgodny wstecznie. Co gorsze, jest darmowy i nie stoi za nim żadna korporacja. Rezultat jest taki, że wychodzi nowa wersja Pythona/IDLE, a ty czekaj sobie, aż dobry człowiek wypuści zgodną bibliotekę.
Koniec końców znalazłem jakąś bibliotekę do MS SQL, ale do wersji 3.4. Musiałem zatem odinstalować środowisko i ściągnąć starszą wersję.

I tu strach mnie obleciał: za trzy miesiące może się okazać, że znów nie ma jakiejś biblioteki, która mi jest potrzebna i cały projekt leży :(
Potem obejrzałem Visual Studio oraz NetBeans do Java, a tam eldorado. Wszystko zgodne, wszystko kompatybilne, wszystko w jednym miejscu! Składnia trudniejsza niż składnia Pythona, ale komfort tworzenia w technologii, za którą stoi korporacja.

0
alagner napisał(a):

EDIT: w Delphi/Lazarusa bym się nie pchał bo to staroć/nisza. Jeśli nie czujesz się już z Pascalem jakoś bardzo komfortowo to w moim odczuciu nie warto się w to ładować.

Docelowo IMHO dobre będzie coś ze stajni Microsoftu (czy vb czy C#),

Też tak uważam. Ponieważ znam Excela i VBA, to ściągnąłem sobie Visual Studio, myśląc, że to jest najlepszy wybór.

Jest jednak jedno ale: zakładam sobie projekt w Pythonie albo Lazarusie i mam 5 linii kodu i dwa pliki na krzyż, które rozumiem i kontroluję. A ja lubię mieć 100% kontroli nad kodem, lubię rozumieć każdą linijkę. **Nie chcę być niewolnikiem środowiska RAD. **
Visual Studio to kombajn. Być może dla Ciebie on nie przedstawia większych trudności, ale wierz mi, że takiego amatora jak ja przeraża. Tworzy nieprawdopodobną ilość kodu, kopę plików. Gubię się w tym. Ogarnia mnie lęk. Budzę się w nocy zlany potem.

A ja chcę coś prostego, lekkiego. Coś, co mogę rozumieć.

0

@acalanthis lubisz wszystko rozumiec i miecj wszystko w miare proste?

pisz w pythonie. GUI zrobisz recznie (a nie wyklikasz) do tego wystarczy Ci prosty edytor tekstu jak sublime text czy vim czy notepad++

Jest pelno kursow do pythona (i to dobrych) nie powinienes miec z tym problemow. Jezlei bedziesz znal pythona to uwierz mi ze na tym nie stracisz.
Python jest teraz "w modzie" wiec latwiej znalezc nowe rozszerzenia i pomoc

2

Uczep się R. Jest to język stworzony z myślą o analitykach, więc raczej dobrze wpasowujesz siè w definicję + przy ms sql masz taki bonus przy R: https://msdn.microsoft.com/en-us/library/mt604845.aspx

0
fasadin napisał(a):

@acalanthis lubisz wszystko rozumiec i miecj wszystko w miare proste?

pisz w pythonie. GUI zrobisz recznie (a nie wyklikasz) do tego wystarczy Ci prosty edytor tekstu

Słuszna rada. Ale czy uwzględnia ona fakt, że w popularnej bibliotece do GUI, czyli w Tkinter nie ma w ogóle takiego widżeta jak grid do wyświetlenia danych pobranych z bazy danych? Taki grid jest dopiero w bibliotece PyQt, która do zastosowań komercyjnych jest płatna. Są jeszcze słabo rozpowszechnione i słabo przetestowane biblioteki np. wx python.

Właśnie o to chodzi, że ja nie chcę się rozwijać w informatyce, tylko potrzebuję języka do konkretnego, jednego zastosowania: pobieranie z bazy i zapisywanie do bazy + jakieś zestawienia. Python jest świetnym językiem, ale czy jest świetny właśnie do tego?

0
fasadin napisał(a):

pisz w pythonie.

A i jeszcze jedno. Nic tak nie dodaje skrzydeł jak historie sukcesu. Widziałem trochę aplikacji napisanych w C#, VB do obsługi baz danych. Ale w Pythonie? Czy będę pierwszy na świecie, kto porwałby się na coś takiego? Mówię o aplikacji bazodanowe, desktopowej na Windows.

0
fasadin napisał(a):

http://takluyver.github.io/posts/so-you-want-to-write-a-desktop-app-in-python.html

https://wiki.python.org/moin/GuiProgramming

a z baza danych w pythonie to nie ma zadnego problemu...

Tak ale:
http://4programmers.net/Forum/688805

"Wykorzystanie Pythona jako samodzielnego języka w programach komercyjnych jest niemal zerowe (sugerując się listą programów w Pythonie w Wikipedii), jest wykorzystywany zwykle do pisania pomocniczych skryptów. "

Python jest co do zasady łatwiejszym językiem niż np. Java. Ale czy jest łatwiejszy, kiedy chcemy w nim zrobić ładny datagrid z sortowaniem po kolumnach, filtrowaniem danych, możliwością zaznaczenia checkboxa przy każdym wierszu wyszukania itp. Kalkulator jest łatwiej zrobić w Pythonie - to wiem. Natomiast szukając konkretnego rozwiązania do konkretnego problemu, np. jak zrobić mały lejek do filtrowania kolumny, znalazłem mnóstwo tutoriali do np. Java, ale żadnego do Pythona. I tu być może sprawdziło się to, że Python w zastosowaniach komercyjnych to głównie backend stron internetowych, a nie bazodanowe aplikacje desktopowe.

0
fasadin napisał(a):

a z baza danych w pythonie to nie ma zadnego problemu...

Baza nie, ale takich przykładów na stronach o Pythonie nie znajdziesz:
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

0
  1. Do samych baz danych świetnie nadaje się Perl: mało popularny w Polsce, ale akurat do baz danych jest dobry

  2. Może wcale nie trzeba ci języka? Zastanów się - może zamiast uczyć się programowania, to naucz się OPROGRAMOWANIA. Są różne gotowe programy, z wbudowanym systemem skryptów. Nauka OPROGRAMOWANIA niejednokrotnie daje znacznie lepszy efekt od programowania.

  3. Jak bazy danych, to może w pierwszej kolejności nauka bazy danych, zapytań ? a w dalszej język

  4. Podejście pragmatyczne - uczysz się rozwiązania konkretnego problemu, ale nie interesują cię języki.
    Wady podejścia pragmatycznego: po pewnym czasie robi się burdel w kodzie. To zadanie/problem rozwiązujesz pythonem, tamto perlem, jeszcze tamto PHP. Robi się bałagan.

  5. Proste i prawdziwe - naucz się tego co uważasz za proste dla ciebie (subiektywnie) i przyjemne. Jeżeli z tych podstawowych języków któryś uznasz za prosty&przyjemny, to się go trzymaj, bo prawdopodobnie do twoich zastosowań i tak wystarczy, a tobie pozwoli lepiej pracować.

0
acalanthis napisał(a):

I tu być może sprawdziło się to, że Python w zastosowaniach komercyjnych to głównie backend stron internetowych, a nie bazodanowe aplikacje desktopowe.

Obecnie praktycznie wszystkie dane znajdujące się na stronach są trzymane w bazach danych. Więc backend stron również musi się komunikować z bazą żeby coś zapisać / odczytać. W pythonie różnica między aplikacją desktopową a stroną internetową polega na tym w jaki sposób prezentujesz dane. Pod spodem jest prawie to samo.

0
NieGooglujMnie napisał(a):
  1. Może wcale nie trzeba ci języka? Zastanów się - może zamiast uczyć się programowania, to naucz się OPROGRAMOWANIA. Są różne gotowe programy, z wbudowanym systemem skryptów. Nauka OPROGRAMOWANIA niejednokrotnie daje znacznie lepszy efekt od programowania.

  2. Jak bazy danych, to może w pierwszej kolejności nauka bazy danych, zapytań ? a w dalszej język
    .

ad 2 - Możesz rozwinąć?

ad 3 - SQL znam. Nauczyłem się do Excela, którym podpinałem się do bazy SQL.

0
acalanthis napisał(a):

(...)

  1. Jak bazy danych, to może w pierwszej kolejności nauka bazy danych, zapytań ? a w dalszej język
    ad 3 - SQL znam. Nauczyłem się do Excela, którym podpinałem się do bazy SQL.

ad 2 - Możesz rozwinąć?
Np.

  • MS SQL Server
  • JetBrains > DataGrip
  • Eclipse & pluginy do baz danych

Generalnie : co trzeba zrobić, jaki problem masz do rozwiązania?
Co ci firma, projekt narzuca?
czy chcesz utrzymywać sesję (np. zalogowanie się do bazy przez 10 minut) ?

z języków to tak na szybko:

  • minimalistyczna składnia, nowy, trendy: RoR (framework Ruby)

  • kontakt z serwerem, znany od lat: PHP

  • używany w bankach, sklepach e-commerce, z długą tradycją: Java, Perl

  • prosty, ale też trochę bałagan pomiędzy 2 a 3 wersją: Python

  • dowolne operacje na uniwersalnych bazach danych:
    praktycznie każdy język, ale bez tych "wbudowanych-skryptowych" jak np. JavaScript. Może nie ma sensu też tych najbardziej niskopoziomowych/systemowych (assembler, C/C++), ale nie wiem

1

Zdecydowanie Python. Do SQL, jeśli nie masz zamiaru używać ORMa, to polecam https://github.com/mkleehammer/pyodbc (tego używa pod spodem najpopularniejszy pythonowy ORM - SQLAlchemy). Połączysz się za pomocą tego z prawie wszystkimi popularnymi bazami danych. Jak GUI to b. dobrym wyborem jest Qt. W Pythonie są dwie popularne biblioteki do Qt - wspomniane PyQt i PySide. Ich API jest praktycznie identyczne, z tą różnicą, że PySide nie wspiera Qt5. PyQt jest bardzo aktywnie rozwijane, PySide mniej, ale jak najbardziej używalne. PyQt możesz używać bez problemu do niekomercyjnych projektów, a co do licencji komercyjnej - nie przesadzajmy, jeśli firma będzie chciała stworzyć jakiś projekt w tym, to nie będzie problemem dla niej wydanie 2 tysięcy. PySide całkowicie darmowe. Jeśli nie to zawsze są też biblioteki nie związane z Qt - wxWidgets, tkinter.

"Wykorzystanie Pythona jako samodzielnego języka w programach komercyjnych jest niemal zerowe (sugerując się listą programów w Pythonie w Wikipedii), jest wykorzystywany zwykle do pisania pomocniczych skryptów. "

Wkleiłeś cytat jednego z użytkowników forum mający 6 lat (cytat, nie użytkownik :D). Nie wiem jak wtedy, obecnie jest nieprawdziwy.

0

Studiuje kierunek inf. I ekonometria i wybrałem c#, uczę sie sam od zera, idzie wszystko znalezc tu na forum lub szukając w Google. Zrobilem w nim pare aplikacji powiazanych z raportowaniem czy analiza danych i bardzo podpasowal mi ten jezyk. Do łączenia z bazami ado.net jest przyjemne w użyciu, a za prezentacje w win forms odpowiadają kontrolki, ktorym wskazujesz tylko źródło.

0

A dlaczego nikt z was nawet półgębkiem nie zająknie się o Javie - wszak to jeden z najpopularniejszych języków. Czyżby był tak znienawidzony?

0

Do windowsowych desktopów IMO lepszy i chyba popularniejszy jest .NET (Java i C# to generalnie alternatywy, w większości to samo przeznaczenie).

0
Wizzie napisał(a):

Do windowsowych desktopów IMO lepszy i chyba popularniejszy jest .NET (Java i C# to generalnie alternatywy, w większości to samo przeznaczenie).

Atuty Java są następujące: świetna dokumentacja, wręcz rzekłbym najlepsza. Świetne podręczniki. Ładne środowisko (NetBeans): duże możliwości a z drugiej strony dość lekkie i przejrzyste.

Czy Java jest dużo trudniejsza od Delpie i od Pythona? Np. Czy można powiedzieć, że Java jest 3 razy trudniejsza od Pythona i 2 razy trudniejsza od Delphie?

2
acalanthis napisał(a):

Jestem ekonomistą. Aby ułatwić swoją pracę, chciałbym nauczyć się tworzyć programy komputerowe o następującym przeznaczeniu:

  • interface do MS SQL
  • możliwość zarówno odczytu jak i do zapisu do bazy
  • praca wyłącznie w środowisku Windows
  • łatwe tworzenie GUI.

Windows + MSSQL + GUI = C# + Windows Forms. W Visual Studio wyklikasz sobie okienka i połączenie z bazą, bindowanie danych ze źródła do GUI. Nie będzie to szczyt inżynierii oprogramowania ani podejście dobre dla aplikacji enterprise, ale nie o to chyba chodzi.

  • C#/Java - trudny. Długo się czeka na pierwsze efekty. Wezmę się za to, jeśli nie będzie innego wyjścia.

Może i C# jest trudniejszy od Pythona pod względem składni, no ale też bez przesady. Natomiast jeśli chodziło Ci o cały stos technologiczny C# czy Javy, to przecież nie musisz uczyć się wszystkiego, żeby zrobić swoją aplikację. Właściwie sprawę załatwiłby jeden tutorial, których trochę w necie da się znaleźć.

Najlepiej w sumie byłoby Ci spróbować - np. wyświetlić jedną tabelę z bazy w gridzie przy użyciu różnych języków/technologii, a potem wybrać ten, w którym było Ci najlepiej.

0

Dzięki waszym poradom i swoim przemyśleniom zawężam obszar poszukiwać do:

  • Visual Basic z wykorzystaniem Visual Studio
  • Java z wykorzystaniem NetBeans
  • Python z wykorzystaniem IDLE.

Inne języki nie wchodzą już w grę. Teraz gra idzie o to, czy wyrzucamy z Pythona z listy, czy go zostawimy. Kwestią ryzyka jest tutaj fakt, że jego prymarne zastosowanie to webaplikacje.

0

Na koniec jeszcze takie pytanie do programistów:

Czy istnieje w firmach programistycznych tendencja, że do dużych projektów wybiera się zwykle języki X albo Y, natomiast do małych projektów, krótkich zadań wybiera się zwykle język Z?
Chodzi oczywiście o projekty biznesowe, bazodanowe.

0

Tak, jest taka tendencja. Nazywa się: jak mamy Oracle'a to Java, jak mamy MSSqla to C#, a jak mamy postgresa to jesteśmy biedni ;)

Nie, poważnie: wiodące są Java i C#.

0

Podjąłem decyzję o równoległej nauce Pythona (jako pierwszy język) oraz Delphi/Lazarusa Java.

Jeśli chodzi o Pythona, to będę wszystko wbijał z palca. Dzięki temu poznam ogólne koncepcje programowania, projektowania itp. Java zafascynowała mnie z uwagi na dużą liczbę bibliotek do aplikacji biznesowych i super-środowisko Netbeans.

Dziękuję wszystkim za porady.

Jak widać zmieniłem swoją decyzję z Delphi na Java z uwagi na ilość tutoriali, filmów, samouczków itd. Oprócz tego Java wydała mi się bardziej perspektywistyczna.

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