![[Dart 학습회고] 새로운 언어를 공부해보자.](https://cdn.hashnode.com/res/hashnode/image/upload/v1723127564043/90e0327b-e1e7-42e8-9980-0c98cdbabf57.webp)
오랜만의 포스팅이다. 그동안 알바하면서 줄어든 공부시간에 쫌쫌따리 책읽고 기초적인 부분 학습하느라 블로깅할 거리가 없었다...ㅠ 오늘은 학습회고 같은 느낌으로다가 짧게 적어야지!
학습 이유
다트(그리고 플러터)와의 만남은 지금이 처음이 아니다. 2월 인생 첫 개발자 면접에서부터 플러터로 백오피스를 개발하는 것을 원하는 면접 담당관을 만났었고, 그 때부터 어! 플러터가 웹에서도 동작하는 녀석이란 것을 알게 되어 흥미(만) 가졌었다.
뜬금없이 7개월이 지난 시점에 이렇게 공부하는 이유가 무엇이냐고 묻는 다면 첫째는 단순한 호기심일 것이오, 둘째는 최근 면접에서도 플러터로 백오피스를 구성하길 원하는 회사를 만났기 때문이다. 그리고 마지막으로 셋째는 취미로 앱개발 해보려고!
다트 첫인상.
개발을 공부한 지 거의 2년 가까이 되어 가는 느낌인데, 이 기간동안 자바스크립트만을 학습하고 사용해서 그런 지 클래스 기반의 다트가 낯설기만 하다.
물론 자바스크립트에도 클래스(의 가면을 쓴) 문법이 있지만, 리액트도 클래스 컴포넌트가 아닌 함수 컴포넌트를 활용하고 바닐라 자스로 개발할 때도 함수를 활용했다.
그런 점에서 클래스를 활용할 수 있는 환경에 놓일 수 있다는 게 하나의 재미요소로 다가왔다.
JS와 달리 정적 타이핑 언어인 다트를 보면서 다시 한번 TS의 가독성이 얼마나 안좋은 지를 깨달았는데, 확실히 변수와 상수를 아우르는 키워드(var, const, let) 자리에 타입을 명시적으로 작성하는 것이 코드의 복잡도를 줄이는데 큰 몫을 한다는 생각이 들었다.
다만 (dart에서의) const와 final 같이 변수의 값이 언제 정해지냐라는 타이밍에 따른 키워드들은 어? 싶다. 필요가 명확해 꾸준한 학습과 연습을 통해 익숙해지면 되지만 자스러인 나에게는 너무 낯선 방식.
그 외에의 기초적인 문법은 자스와 크게 다르다라는 인상은 없었다. 프로그래밍 언어라는 게 대부분의 형태는 비슷하다는 게 이런 걸까🧐
하지만 난관은 역시나 클래스 문법..
기본적인 틀은 자바나 자바스크립트나 다트나 다 비슷한 거 같은데, 확실히 익숙하지 않은 것은 손이 마음대로 안움직이고 사소한 곳에서 에러를 발생시킨다.
클래스 문법에서 독특하다고 생각했던 것은 private 변수였는데 내가 알고 있던 프라이빗 변수는 프라이빗 변수가 속한 클래스를 가리키고 그 클래스 내부에서만 접근 가능한 것으로 알고 있었는데, 다트에서는 파일 단위의 격리였다. 이건 좀 신기하다. 앱을 지향하는 언어의 특징인가? (아닌데... 얘 원래 웹도 타겟팅한 언어였던 걸로 아는데...? 나중에 찾아보자-)
그리고 상속과 인터페이스, 추상 구문 등 클래스를 재사용하는 문법들이 들어는 봤으나 쉽게 무언갈 만들어 생각하기엔 아직 어렵다.
아 또 다트에서 override와 같은 것들이 키워드가 아닌 주석으로 처리되는 것도 독특하게 느껴졌다.
자바스트립트에서도 'use strict'나 넥스트의 ‘use client' 같은 주석 구문을 봤지만, use strict같은 건 쓸 일이 거의 없었어서 그런지 신기하게 느껴졌다.
다트 어디까지 사용가능하니..?
다트라고 하면 플러터를 활용한 크로스 플랫폼 개발만 떠올라서 서버언어로도 활용할 수 있는 지 찾아봤는데, 사용이 가능한가보다.
하지만 대부분의 서버 프레임워크들은 현재 샷다를 내린 것 같은디 이거 생태계가 더 확장되면 좋겠다.
지금은 플러터 원툴아닌가 싶은데 더 찾아보겠다.
(pub.dev 를 찾아보면 되는 거 맞지..?)
현 다트의 이유 플러러!!!
사실 아직 플러터 공부를 해본 건 아니긴 한데, 잠시 뒤적거려보았을 때 얘는 html, css, js 다 신경 안써도 되게 위젯이라는 것들을 제공한다.
근데 이 위젯이라는 게 안드로이드나 애플 기반의 ui 디자인을 고대로 이쁘게 제공해주니 아주 복잡한 개성넘치는 앱이 아닌 이상 이걸로 만들어도 너무 괜찮을 것 같다.
지금 애플뮤직도 플러터라고 들었는데 나는 애플뮤직 디자인 맘에 들거든...
플러터는 다트 문법들 더 정리해서 보고 학습할 예정이지만 SEO를 지원하지 않아 SEO최적화가 필요한 서비스를 만들지 않는 이상 백오피스 수준의 앱에서는 리액트로 개발하는 것보다 낫지 않을까 하는 생각도 들었다.
효율이 좋을 것 같다.
마치며
오늘은 간단한 학습회고를 작성했지만 조금 더 공부해서 관련된 포스팅을 올릴 수 있도록 하겠습니다...


![[트러블슈팅] 서버를 터뜨린 쟈그마한 함수](https://cdn.hashnode.com/res/hashnode/image/upload/v1748357643167/fc68d237-0bfe-4f79-8e28-15fd98c5710d.png)
![[기술 서적 후기 및 요약] 쏙쏙 들어오는 함수형 코딩](https://cdn.hashnode.com/res/hashnode/image/upload/v1743129459556/14a7d741-d22e-4622-98e4-1857e449821e.png)
![[Daily Flow 1.] Validator 리팩토링](https://cdn.hashnode.com/res/hashnode/image/upload/v1741161717995/a62693a8-0f24-4dc9-8d80-cefe541ed663.png)