Jaki język programowania wybrać na start?

0

Witam, rozpoczynam dopiero przygodę z programowaniem. Kojarzę podstawy C++.
Chciałbym się kierować w stronę programowania mobilnego. Konkretnie Android.
Jaki język programowania powinienem wybrać pierwszy i do którego dążyć?
Podobno Java jest opłacalna, ale trochę za trudno jak na start

2

Akcja od 01:25

2

Ja bym wybrał Jave, uczysz się Javy 8 i nie przejmujesz się nowymi wydaniami Javy 9, 10, 11, 12, 13 na Androidzie, ponieważ Android z nich nie skorzysta. Próbowałem pisać pod Androidem w Kotlinie, ale poza tym że dodaje więcej lukru składniowego i coraz więcej nowych funkcji z których początkujący programista mobilny i tak nie skorzysta. Do tego trzeba się uczyć Javy i Kotlina w przyszłości nie wiadomo czy Google zostanie z Kotlinem. Czasem tworzę jakąś apkę dla siebie. Dziś pobrałem Android Studio 3.5 i go ładnie odchudzili, tylko 750MB do pobrania, a ostatnio jak go pobierałem ważył 1040MB. Czy ostatnio coś z niego usunęli, starsze wersje Androida?

2

Tylko Flutter! Jeden z moderatorów mi to zaproponował (@cerrato) i nie wyobrażam sobie innego języka/frameworka jeśli chodzi o mobilne. Możesz mieć na początku mdłości z powodu kodu, przyznaje, jest dość specyficzny.

Zaczynałem z tym: Flutter Tutorial for Beginners - Build iOS and Android Apps with Google's Flutter & Dart
Skończyłem uczyć się na tym: Learn Flutter & Dart to Build iOS & Android Apps

0

A jeszcze jedno małe, może trochę głupie pytanie, ale nie mogę znaleźć na nie odpowiedzi?
Czym się różnią te poszczególne odpowiedniki Javy?
Mam na myśli SE, JDK itp..
Ma ktoś może rozpiskę tego wszystkiego?

2

SE - Standard Edition nie piszę w Javie więc nie wiem czy jest opcja non standard, czyli jakaś enterprise.
JDK - Java Development Kit tutaj jest cała "logika" Javy, klasy, funkcje itp itd.
JRE - Java Runtime Environment to potrzebujesz, że program napisany w Javie uruchomić.

PS.
Jak gadam głupoty to niech mnie ktoś poprawi.

3

Kotlin jest obecnie domyślnym językiem dla androida. Jest bardzo podobny do Javy. Usuwa sporo niepotrzebnej redundancji w kodzie i ma kilka ciekawych dodatków. Pewnie jest to dobry start. Z drugiej strony Java jest bardziej rozpowszechniona na innych platformach. Różnica pewnie nie wielka. Na androidzie pewnie innymi językami na początku nie ma co sobie głowy zawracać:

Java SE -- To jedno z wydań Javy. Wersja Standard (W odróżnieniu od Enterprise, na przykład).
JDK/JRE -- To to paczki pozwalające odpowiednio tworzyć i uruchamiać aplikacje napisane w Javie. Ma się rozumieć, że JDK zawiera JRE.

Na androidzie będziesz potrzebował jeszcze Android SDK, ale to pewnie ci się ściągnie automatycznie jeśli wybierzesz Android Studio czy inne dedykowane IDE.

0

Jest jakaś różnica między Java SE, a javą na androida? Czy po prostu dodaje się bibliotekę i wszystko śmiga?

1

Różnica jest w bibliotekach i sposobie uruchomienia aplikacji. Na Androidzie nie ma takich okienek w Swing jak na desktop, jest coś innego. Po drugie, cykl życia aplikacji jest inny.

0

Ściśle rzecz ujmując, na androidzie jest trochę inna java, dawniej Dalvik Virtual Machine, obecnie zostały tylko jego formaty plików. To jednak nie ma wielkiego znaczenia, bo i tak kompilujemy kod zwykłym kompilatorem (np. z SE) i potem dopiero wynikowy program jest pakowany zgodnie z wymogami androida i instalowany na urządzeniu/emulatorze (programy aapt, dx, adb z SDK). Android studio wszystko to robi z automatu.
Prosto rzecz ujmując, zakres Java SE jest dostępny na androidzie, choć nie zawsze cała. Na przykład nowości z Java 8 są dostępne dopiero od którejś wersji androida.

3

Przy kompatybilności należy rozróżnić czy mówimy o kompatybilności kodu źródłowego czy bajtowego. Przykładowo kod bajtowy z Javy 8 jest wspierany w pełni dzięki D8. W rzeczywistości wszystko do Javy 11 jest wspierane. Problemem dla Androida z Javy 11 są nestmates - https://openjdk.java.net/jeps/181.

Z kolei jeśli chodzi o kod źródłowy, to tutaj bywa różnie. Albo korzystamy z odpowiednio wysokiej wersji SDK, która ma wsparcie np. dla takich klas DateTime (przy czym wsparcie może być tylko dla części klas z konkretnej wersji Javy) albo kombinujemy. Możemy znowu się zdać na narzędzia, żeby API było dla nas tylko lukrem składniowym, który jest potem odpowiednio tłumaczony. Tylko to działa różnie w zależności od narzędzi do budowania. W Gradleu (D8) póki co na wiele liczyć nie można. Jak ktoś korzysta z Bazel (desugar) to już sprawa ma się lepiej, bo są np. Optionale, Streamy, java.time itd. Innym wyjściem jest korzystanie z bibliotek, które dają wsparcie wsteczne jak np. ThreeTenABP - https://github.com/JakeWharton/ThreeTenABP.

W skrócie, to lekko nie jest.

0

A co na temat Kotlin'a?
Warto ruszać?
Podobno dobrze pnie się do góry jeśli chodzi o Androida

1

Warto!

1

Szczerze odradzam react-native na mobilki. Pracując na tym masz wrażenie, że cały ten system to bardzo wczesna alfa, w której rzeczy działają/nie działają bez sensownego uzasadnienia. Każda zmiana na poziomie 0.x.x to właściwie nowy system, a co za tym idzie niekompatybilność paczek wbija w fotel. Masa kluczowych paczek jest porzucona z informacją, że nie da się pracować z systemem, który jest redykalnie zmieniany z wersji na wersję.

Jest spora szansa, że docelowo development dla androida przeniesie się na fluttera. Jedna firma robi dwa środowiska do pisania aplikacji na androida, przypadek?
Nie sądzę.
A jak się pojawi fuchsia, to ogólnie może się namieszać.
Flutter jest spoko. Żałuję, że nie udało mi się przekonać kierownictwa do wdrożenia go.
Ogólnie zawsze warto uczyć się natywki, bo przy niektórych funkcjach się przydaje, ale do tych aspektów tworzenia aplikacji dochodzi się bardzo późno.

10
Łukasz Ostas napisał(a):

A co na temat Kotlin'a?
Warto ruszać?
Podobno dobrze pnie się do góry jeśli chodzi o Androida

Chłopie, myśmy na ślepo szli w Pascala, C, Delphi, C++, Javę, PHP itd... i dopiero potem podejmowaliśmy "życiową" decyzję, a Ty się boisz, żeby czasem nie wybrać czegoś, co będzie "stratą czasu"...
Interesuje Cię jakaś technologia, to przerób kilka tutoriali, zacznij jakiś kurs i wyrób sobie własne zdanie.
Programowanie to nie jest One Shot - One Kill. Wstrzeliwując się teraz w jedną technologię, oszczędzasz sobie bardzo dużo cennych doświadczeń i przemyśleń.

Łukasz Ostas napisał(a):

Witam, rozpoczynam dopiero przygodę z programowaniem. Kojarzę podstawy C++.

Na obecnym etapie każdy czas poświęcony na programowanie opłaci Ci się...
Nieważne w czym, po prostu zacznij działać. Nabierzesz własnych doświadczeń i dokonasz świadomego wyboru.

2

Dokładnie tak jak @Spine napisał. Ja też przeszedłem przez Kotlina, Javę i Xamarina i dopiero z Flutterem udało mi się zrobić to co chciałem zrobić bez ciepania łaciną na lewo i prawo ;-)

0

Ok, mam trochę podobne pytanie. Czy osoba totalnie początkująca w programowaniu, której marzeniem jest robić apki mobilne dla samej siebie (kto wie może w przyszłosći takze dla kogoś), może zacząć naukę programowania od Kotlina? Czy lepiej poznać Jave?

1

Może.

1
marcin0218 napisał(a):

może zacząć naukę programowania od Kotlina? Czy lepiej poznać Jave?

Czy osoba chcąca uczyć się języka japońskiego, powinna najpierw poznać chiński?

0

Hmm Ty mi powiedz, bo ok. 70 – 80% znaków w japońskim i chińskim i ich połączeń określa to samo.

0

Ale wymowa inna. No i w Japońskim są 2 systemy pisma sylabicznego... hiragana i katakana.

Ale nie w tym rzecz... Wszystkie popularne języki programowania nieznacznie się różnią...
Chciałem obalić stwierdzenie, że jakiś język trzeba poznać przed poznaniem następnego.
Dowolny język dobry będzie na start.

0

No własnie i wszystko fajnie, tylko zadałeś mi źle pytanie :) Bo ja nie pytam czy aby poznać, Kotlina to powinienem poznać Javę lub na odwrót. Tylko czy powinien poznań Kotlina czy lepiej Jave, by tworzyć aplikacje mobilne? Czyli przekładając na Twój tok pytam: lepiej poznać japoński czy chiński by mi jako początkującemu, łatwiej było używać pisma logograficznego :D

Ale dzięki, za odpowiedź, sądziłem, że może pod kątem mobilnych apek lepiej najpierw Javę bo jest dłużej na rynku itp. Bo tak jak mówię, nie znam się. Ale skoro mówisz, że może być dowolny to zacznę chyba od Kotlina. Ponoć oficjalny język Androida, z tego co wyczytałem.

0

No to jak dla mnie, do mobilek lepiej C#... Robię w Unity :P

0

A jeszcze jedno pytanie. Rozumiem, że Kotlin w przeciwieństwie do Javy, służy tylko i wyłącznie do aplikacji mobilnych? BO wiem, że Java ma FX itp, a Kotlin chyba nie?

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