Flutter vs Dart

이정주·2023년 11월 4일
1

플러터

목록 보기
1/1
post-thumbnail

안녕하세요, "초보자도 프로처럼 만드는 플러터 앱 개발" 저자 이정주입니다.

Flutter(플러터)를 이용하여 iOS, 안드로이드 등등 개발을 하고계신 개발자분들이 많을 것이라고 생각합니다. 그래서 가장 많이 하시는 오해인, 플러터와 다트는 같은 것일까? 라는 부분에 대해 논의를 해보고자 합니다.

다트와 플러터는 프로그래밍 언어와 프레임 워크의 관계입니다. 다트는 프로그래밍 언어로서, 크로스플랫폼 환경을 지원합니다. 플러터는 다트를 기반으로 미리 만들어진 위젯과 다양한 기능들을 통해 사용자 인터페이스를 더 편리하게 개발할 수 있게 해 줍니다. 즉 다트는 플러터를 활용한 크로스플랫폼 앱 개발에 주로 사용되지만, 파이썬과 같이 화면 개념이 없는 CLI(Command-line interface) 코드 작성도 가능한 것이죠. 그러나 다트를 쓰는 용례가 사실상 플러터 밖에 없기 때문에 헷갈릴 수 있습니다. 다트가 Java라면, 플러터는 Spring이라고 보시면 됩니다.

다트와 플러터로 프로그래밍하면 다양한 "문법적 편의성"을 가지면서 단일코드베이스에서 안드로이드, iOS, 자바스크립트 등으로 내보낼 수 있습니다.

플러터의 장점은 앱의 사용자 인터페이스를 다룸에 있어서 보이는 기능이나 보이지 않는 앱 내부 로직도 편의성있게 개발할 수 있다는 점입니다. 이 과정에서 다트가 사용되는 것이구요. 사용자 인터페이스는 앱을 키면 보이는 화면들, 사각형이나 버튼, 텍스트 들이 등장하는 부분입니다. 이에 더하여 앱 내부에 보이지 않는 화면전환과 같은 인터페이스도 있죠. 플러터는 가시적인 사용자 인터페이스와 보이지 않는 사용자 인터페이스들을 개발자가 효율적으로 컨트롤 할 수 있도록 해줍니다. 예를 들면, 플러터는 패러다임상 상태 변화가 되면 화면이 그 상태를 반영합니다.

아시다시피 이렇듯 상태 변화를 시킬 수 있는 기능은 당연해보이지만 예전에는 그렇지 못했습니다. 순수 HTML로 개발한 단순한 형태의 웹사이트에서는 상태 변화에 따라 화면이 갱신되지 않습니다. 특정한 값을 바꿨을 때, 자동으로 그 값에 맞춰 화면이 변하는 것이 아니라 화면을 바꾸어 달라고 수동으로 명령을 해야하는 겁니다. 상당히 비효율적이겠죠? 사용자 인터페이스가 복잡해지면 한 화면에 '상태'가 굉장히 많아지고, 이 상태가 중첩되면 이러한 변경 사항들을 모두 일일이 명령해야 할지에 대한 딜레마에 마주하게 됩니다. 유지보수도 굉장히 힘들어지겠죠.이러한 패러다임을 명령형 패러다임이라고 합니다.

그러나 플러터는 '선언형 패러다임'에 해당합니다. 선언형 패러다임이란 화면을 만들 때 해당 지점에는 '이 상태가 들어갈 자리에요'라고 선언하는 패러다임입니다. 자동으로 상태 값에 맞춰 화면도 바뀌는 것이죠. 훨씬 더 큰 문법적 편의성을 가질 수 있는 겁니다. 선언형 패러다임에는 리액트가 있습니다. 웹에서 사용할 수 있는 리액트, 앱에서 사용할 수 있는 리액트 네이티브가 있지요. 플러터는 개발 프로그램들의 장점을 모아서 실수할 수 있는 부분들을 많이 보완한, 범용성 넓은 언어라고 생각해주시면 될 것 같아요. 다트지만 플러터를 활용하지 않는 사례로 serverpod이 있습니다. 말 그대로 앱이나 웹사이트가 아닌 서버를 구현하는 방법인데요. 아래의 링크로 한 번 확인해보세요!

https://serverpod.dev/

플러터는 프로그래밍 언어가 아니고, 우선, 다트(Dart)는 구글에서 개발한 프로그래밍 언어입니다.이를 좀 더 편리하게 이용할 수 있도록 툴을 제공하는 것이 플러터이고, 툴이나 어떤 미리 만들어진 것들을 제공해 주는 것이 플러터입니다.

이제 이해가 되시나요? 플러터와 다트는 분리할 수 있는게 아닙니다. 그러나 같지도 않지요. 정리를 하자면,

"다트 안에 플러터가 있다"

로 이해하시면 되겠습니다.

이 외에도 플러터와 다트에 대해 궁금한 점이 있으시면, 댓글로 자유롭게 의견을 남겨주시면 감사하겠습니다!

profile
꾸준한 전진을 꿈꾸는 개발자 이정주(JJ)입니다.

0개의 댓글

관련 채용 정보