Jaki język programowania wybrać na start?

Odpowiedz Nowy wątek
2019-09-15 00:34
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

Pozostało 580 znaków

2019-09-15 00:59
2

Akcja od 01:25

edytowany 2x, ostatnio: Spine, 2019-09-15 01:00
Pokaż pozostałe 17 komentarzy
@Shalom: Z taką publiką jest autorytetem. Czy dobrym, czy ze złej strony mocy, nie będę się spierać, ale autorytetem jest. - BraVolt 2019-09-17 14:56
No to taki autorytet trochę jak antivaxxerzy czy płaskoziemcy albo dr. Zięba. Autorytet dla ludzi którzy nie mają o pewnych rzeczach pojęcia i łapią się na krasomówstwo. Ale tutaj jesteśmy jednak na forum gdzie ludzie powinni wiedzieć trochę więcej. - Shalom 2019-09-17 14:59
@Shalom: to taki autorytet biznesowy i kulturowy, obwołany przez masy. Gustów się nie dyskutuje, o biznesie po fakcie każdy może krytykować, przewidzieć za wczasu potrafią nieliczni. - BraVolt 2019-09-17 15:02
Dobrze, przewinąłem szybko po cichu film. Aniserowicz mówi dla mnie z sensem: pierwszy i najważniejszy język programisty to język angielski. - BraVolt 2019-09-17 15:04

Pozostało 580 znaków

2019-09-15 02:18
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?

Pozostało 580 znaków

2019-09-15 08:27
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

Pokaż pozostałe 7 komentarzy
Jakby nie patrzeć - prezydentem się bywa, elektryk jest na całe życie ;) - cerrato 2019-09-15 19:16
Haha wygrałeś ;-) - AdamWox 2019-09-15 19:19
Niektóre tytuły (np: prezydent, premier, minister, marszałek, senator , ...) zostają dożywotnio. (chyba jakiś żart zepsułem :/ ) - Delor 2019-09-15 19:47
@Delor: ale świnia jesteś ;) - cerrato 2019-09-15 20:25

Pozostało 580 znaków

2019-09-15 09:28
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?

Pozostało 580 znaków

2019-09-15 09:35
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.

"nie piszę w Javie więc", nie znam sie ale sie wypowiem - xxxmateusz00xxx 2019-09-15 10:14
@xxxmateusz00xxx: napisałem coś źle mimo iż się nie znam? - AdamWox 2019-09-15 10:20
Kto tutaj ostatnio wypisywał to samo co Ty, ale z lepszym wyjaśnieniem. Nie chce mi sie teraz tego szukać. - xxxmateusz00xxx 2019-09-15 10:38

Pozostało 580 znaków

2019-09-15 10:41
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.


Tylko czy Google słynne z porzucania różnych swoich projektów, gdy pojawi się FuchsiaOS, nie odwróci się od Kotlina. Tu niby zainwestowało w Kotlina, a z drugiej strony wymyśliło Flutter i go promuje z Dart. Kto ogarnia wizje Google? - prototype 2019-09-15 16:07
Nie jestem znawcą, ale czytając o tej Fuchsii, Google chyba rzeczywiście chce usunąć zależność od JVM. To by był jakiś argument za tym Flutterem. I możliwe, że ma bardziej rozsądne API. Trudno jednak powiedzieć, bo nie używałem tego... - elwis 2019-09-15 16:34
Na pewno nowy system bez zależności JVM byłby lżejszy, ale czy szybszy? - prototype 2019-09-15 16:35
Jak dobrze zrobią, pewnie tak, z drugiej strony API androida pozwala na natywny kod, więc to chyba raczej nie o to się rozchodzi. Myślę że raczej o to że API androida jest bardzo niskopoziomowe i imperatywne. - elwis 2019-09-15 16:54
Android jest z całkowicie innym jądrem Linux niż pozostałe dystrybucje. https://www.phoronix.com/scan[...]droid-Linux-Stable-Kernel-ABI - prototype 2019-09-15 17:44
Ale na Fuschii mialy dzialac apki z androida wiec java tam nie umrze - stivens 2019-09-15 18:25

Pozostało 580 znaków

2019-09-15 10:58
0

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

Kiedyś był podział na Java ME (micro edition, np na Sony Ericsson K510i), Java SE (standard edition - główne wydanie) oraz Java EE (enterprise edition, czyli Java SE + masa dodatkowych bibliotek przydatnych do pisania aplikacji biznesowych). Java ME i Java EE zdechły, a Java SE została i teraz już się nie ma sensu precyzować, że chodzi o Javę SE, bo to jest domyślne. - Wibowit 2019-09-16 01:18
Aaa, nie ten post :P Ale java na androida ma nie do końca taką samą bibliotekę standardową co Java SE. - Wibowit 2019-09-16 01:20

Pozostało 580 znaków

2019-09-15 11:15
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.

A dlaczego Google stanęło na Javie 8 w Androidzie, to przez system bo trudno jest wprowadzać zmiany, czy to zależy od JetBrains i Intellij, które opiera się na Javie 8SE więc są zależni od ich wyborów w przerabianiu Android Studio? Na logikę wydaje się, że trudno przeskakiwać z wersji na wersje w Androidzie i Android Studio? - prototype 2019-09-15 16:10
Z zewnątrz możemy widzieć tylko niektóre problemy przed jakimi stoi Google. Wewnętrznie mogli prowadzić batalię na ten temat. Wersje nowsze, niż 8, może wnoszą więcej problemów, niż korzyści. Np. takie wyrażenia lambda nic nie dają pod względem wydajności. Lambdy są tłumaczone na prywatne statyczne metody. Skoro nie ma potrzeby używania, to po co ruszać? Pomnóżmy takie pierdoły razy kilka tysięcy wystąpień w kodzie i okaże się, że zmiana nie jest taka prosta. - PerlMonk 2019-09-15 18:24
Lambdy są kodowane jako prywatne statyczne metody, ale przy ich pierwszym użyciu JVMka tworzy nową lekką klasę dla lambdy z tej właśnie prywatnej statycznej metody. Takie rozwiązanie zostało wybrane gdyż kodowanie lambdy jako osobnej klasy w osobnym pliku .class rozdmuchałoby mocno rozmiar skompilowanych programów na dysku. Scala do wersji 2.11 robiła właśnie tak, że każda lambda lądowała w osobnym pliku .class i zajmowało to dość sporo miejsca. Od Scali 2.12 używane jest kodowanie z Javy 8 i dzięki temu binarki bibliotek Scalowych są mniejsze nawet o kilkadziesiąt procent. - Wibowit 2019-09-16 01:12
Akurat w nowszych wersjach Javy nawet i w Javie łatwiej zrobić, żeby pliki były mniejsze. W każdym razie Google pewnie nie oczekuje cudów od nowszej wersji i nie przepisuje kodu. - PerlMonk 2019-09-16 10:38

Pozostało 580 znaków

2019-09-15 12:24
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.


edytowany 5x, ostatnio: elwis, 2019-09-15 14:46
Ale przejdą kiedyś na Jave 13, czy to nigdy nie nastąpi? - prototype 2019-09-15 16:11
nie mam pojęcia. W sumie, to Java jest marginesem moich zainteresowań więc mało mnie to obchodzi. ;) - elwis 2019-09-15 16:35
A w czym programujesz? - prototype 2019-09-15 16:36
Obecnie skłaniam się ku lispowi. Po co pisać w upierdliwej Javie jak można ją wygenerować? :) - elwis 2019-09-15 16:55
Po co java13 jak jest kotlin :) - stivens 2019-09-15 18:26

Pozostało 580 znaków

2019-09-15 17:00
2

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.

edytowany 1x, ostatnio: Michał Sikora, 2019-09-15 17:02
Na Wikipedii pisze, że GraalVM, czyli maszyna wirtualna napisana w całości w Javie bez użycia C/C++ bazuje na Javie 8. GraalVM 19.0 is based on top of JDK version 8u212. Ale czy to oznacza, że może obsługiwać nową składnie Switch z Javy 13? - prototype 2019-09-15 17:38

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