Wątek przeniesiony 2020-03-12 14:01 z Edukacja przez cerrato.

Kotlin czy Dart?

0

Witam zastanawiam się który z tych języków jest bardziej przyszłościowy.
Kotlin - natywne aplikacje na Androida
czy może Dart + Flutter i wtedy aplikacje hybrydowe.
Na chłopski rozum, wszystko przemawia za nauką Darta i do tego Flutter.
Po co tworzyć dwa różne kody na IOS i Androida jak da się to zrobić za pomocą jednego.

Jak myślicie, co jest bardziej przyszłościowe?

3

To już bez znaczenia...

4
  • Patrząc ogólnie to Kotlin jest bardziej przyszłościowy bo można w nim pisać nie tylko aplikacje na androida
  • Patrząc szczególnie, tylko na androida, to nie mam pojęcia
6

Ja bym za bardzo nie wybiegał w przyszłość, tylko zobaczył, co teraz jest bardziej przydatne. W przyszłości wszystko może się odwrócić i nauka nowej technologi to jakieś 2 miesiące, żeby coś sensownego pisać. Ja bym teraz raczej szedł w Kotlina, ale kto to wie, co będzie za rok. Ja już dawno przestałem się uczyć "na zapas" gdyż parę razy życie mnie zaskoczyło i okazało się, że moja nauka była bezużyteczna a czas stracony. I już Heraklit z Efezu wiedział, że jedyną stałą rzeczą w życiu jest zmiana.

1

Warto jedynie zaznaczyć, że Kotlin to nie jest przyszłość. To teraźniejszość. Google zaleca pisanie w nim, a nie w Javie. Wiele zespołów native apps pisze w Kotlinie. Dart i Flutter to jedna wielka niewiadoma...

2

Nie rozumiem, o co Wam chodzi z tym wybieganiem w przyszłość. OK, za pewien czas (być może) wejdzie Fuchsia i Android zostanie zaorany. Teoretycznie (stan na chwilę obecną, jak będzie docelowo to się okaże) Flutter ma być natywnym narzędziem do pisania dla tego nowego systemu. Dlatego - patrząc przyszłościowo, nauka Fluttera i Darta jest dobrym pomysłem.

ALE

we Flutterze można już obecnie pisać pełnowartościowe aplikacje na Androida oraz to paskudztwo z jabłkiem. Dlatego pisząc o teraźniejszości i Kotlinie proszę nie pomijać tego, że Flutter jest najbardziej teraźniejszy, wiele firm dokonuje migracji na niego i nie z powodu możliwego nadejścia Fuchsia, tylko pod kątem bieżących projektów.

0

Wszystko jedno który.

1

@cerrato: Jeśli chodzi o Flutter, brak wsparcie dla 3D i pisanie masy kodu by stworzyć nawet najprostszą aplikację. Ja bym rzucił monetą, który język się uczyć i zabrał się za Kotlina

0

Ale jak nie robisz gier czy innych multimedialno-rozrywkowych rzeczy, to brak 3D nie przeszkadza w niczym. Apka dla handlowca, katalog części albo komunikator bez problemu pójdzie na Flutterze. Do prostych wizualizacji 3D są dostępne silniki, ale gry na nich nie zrobisz, bo bazują one na samym CPU, nie potrafią korzystać z GPU. Niemniej do pokazani jakiegoś prostego modelu 3D czy niezbyt skomplikowanej animacji to powinno wystarczyć.

Poza tym Flutter na razie się wgryza na rynek, za pewien czas, gdy zdobędzie popularność, wsparcie 3D będzie koniecznością. Zresztą sami o tym piszą na swojej stronie - https://flutter.dev/docs/resources/faq

Today we don’t support for 3D via OpenGL ES or similar. We have long-term plans to expose an optimized 3D API, but right now we’re focused on 2D.

2
Dregorio napisał(a):

@cerrato: Jeśli chodzi o Flutter, brak wsparcie dla 3D i pisanie masy kodu by stworzyć nawet najprostszą aplikację. Ja bym rzucił monetą, który język się uczyć i zabrał się za Kotlina

Nie jest to prawda. Jest odwrotnie, to natywne api Androida wymusza pisanie rozwlekłego kodu w wielu klasach i plikach xml. Prosty przykład:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState();
  }
}

class _MyAppState extends State<MyApp> {
  List<String> _products = ['Laptop'];
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.deepPurple),
      home: Scaffold(
        appBar: AppBar(title: Text('Long List App')),
        body: Column(children: [
          Container(
              margin: EdgeInsets.all(10.0),
              child: RaisedButton(
                  color: Theme.of(context).primaryColor,
                  splashColor: Colors.blueGrey,
                  textColor: Colors.white,
                  onPressed: () {
                    setState(() {
                      _products.add('Macbook');
                    });
                  },
                  child: Text('Add Laptops'))),
          Column(
              children: _products
                  .map((element) => Card(
                        child: Column(
                          children: <Widget>[
                            Image.asset('assets/macbook.jpg'),
                            Text(element,
                                style: TextStyle(color: Colors.deepPurple))
                          ],
                        ),
                      ))
                  .toList()),
        ]),
      ),
    );
  }
}

Efekt działania programu:
title

To jest już CAŁY potrzebny kod. Lista z niestandardowymi itemami, załadowana dawnymi z przykładowej kolekcji. Napisz teraz to samo w Kotlinie i niech to będzie krótsze i bardziej zwięzłe.

Jeszcze zabawniej się zrobi, jak dodamy tu jakieś rzeczy, które mają wykonywać się asynchronicznie. Albo jakieś niestandardowe kontrolki, np niech obrazek będzie przycięty do kształtu okręgu. To Kotlin daje trochę lukru składniowego w porównaniu z Javą, ale dalej to jest rozwlekłe api Androida

1
Meini napisał(a):

To jest już CAŁY potrzebny kod. Lista z niestandardowymi itemami, załadowana dawnymi z przykładowej kolekcji. Napisz teraz to samo w Kotlinie i niech to będzie krótsze i bardziej zwięzłe.

Tak jak napisałeś, to kwestia SDK Androida, a nie Kotlina jako języka. A SDK się zmienia - nadchodzi Jetpack Compose, który też pozwoli na tworzenie UI w formie deklaratywnego kodu; czyli w podobnym stylu jak te wszystkie Fluttery, Reacty itd. Obecnie w fazie Developer Preview.

0

Fajnie. Ale to mnie nie dziwi, Google jest autorem i jednego i drugiego. Weź tylko pod uwagę, że jvm art, na którym działa Android ma swoje ograniczenia i dlatego między innymi Flutter w całości działa na NDK. Wnętrzności Androida są jakie są i tego już się zmienić nie da.

0

Dart jako język jest lepiej zaprojektowany od Kotlina lub Swifta? Może ktoś podrzucić benchmark porównujący wydajność tych trzech języków programowania? Porównanie Fluttera i React Native fajnie opisali tutaj.
https://www.merixstudio.com/blog/flutter-vs-react-native/

2
freax napisał(a):

Dart jako język jest lepiej zaprojektowany od Kotlina lub Swifta?

Raczej nie, to uboższy i bardziej "kwadratowy" język.

Tutaj porównanie z punktu widzenia androidowca-Kotlinowca: https://medium.com/@wasyl/kotlin-developers-thoughts-on-dart-1f60c4ad21ad

(Swift jest przy tym dość podobny do Kotlina).

Może ktoś podrzucić benchmark porównujący wydajność tych trzech języków programowania?

Wydajność w jakim sensie? Wielkości? Szybkości? (Raczej nie pisze się na telefon aplikacji, w których to akurat "wydajność języka" byłaby wąskim gardłem, a więc nie uważałbym tego za istotny wskaźnik)

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