2018년 4월 27일 금요일

Flutter는 커다란 한 수

최근 Dart와 Typescript 중에 하나를 선택하려고 깊은 고심을 하다가 결국 TS를 골랐습니다. 일단 저는 상당히 친 구글 성향인데, 그럼에도 불구하고 한 가지 프레임웍이 없었다면 고민 자체를 하지 않고 TS를 선택했을 겁니다. 그 프레임웍이 Flutter죠.

Flutter는 다트로 한 번 프로그래밍해서 Android와 iOS용 앱을 모두 빌드할 수 있는 프레임웍입니다. 웹앱과 두 가지 모바일 앱을 언어 하나로 모두 개발할 수 있다는 점이 큰 장점으로 다가왔지만, 결국 당장 필요한 웹앱개발의 여건에 TS가 너무나 압도적이라는 판단을 내렸습니다.

Flutter는 리눅스 환경에서는 데스크탑 앱으로도 빌드할 수 있으며 Fuchsia도 Flutter로 UX 작업을 한다고 하니, 구글이 바라보는 Dart는 모든 환경의 클라이언트를 작성하는 언어일 수도 있겠다 싶습니다. 그 목적이 이미 달성되었다면 Dart도 꽤나 매력적인 언어였을 수 있겠다 싶습니다.

문제는 아직 그 때가 아니라는 점이죠 :-/

2018년 4월 24일 화요일

개인 프로젝트를 하지 못하는 이유

개인프로젝트는 결국 '내가 쓰고 싶어서' 라는 동기가 필요.

내가 쓰려면 결국 웹, 데탑앱 또는 모바일인데 나는 데탑을 주로 리눅스를 쓰므로 저기서 데탑은 리눅스 환경.

또 한 가지는, 개인프로젝트는 돈 받고 하는 것이 아니므로 열받는 것이 없어야 함. 열받는 것이 없음이라 함은 아래의 조건 중에 걸리는 것이 없거나 적어야 한다는 의미.

  • 언어 자체가 괜찮을 것
  • IDE 나 언어의 툴이 왠만큼 갖추어져 있을 것
  • IDE 와 코드의 정적분석툴이 잘 갖추어지려면 결국 정적타입 언어일 수밖에 없음
  • 문서를 포함한 프레임웍이 갖추어져 있을 것
이래저래 적어도 몇 군데는 꼭 걸림.

  • vala - 언어는 나쁘지 않은데 IDE 가 없음
  • C - 2018년에 응용앱 짜는 데 C... 논할 가치가 없음
  • C++ - 언어 자체를 싫어함. 스펙 두꺼운 언어를 제일 싫어함
  • JavaScript - 정적타입이 아니고.. JavaScript horrible language 가 자동완성으로 뜸
  • Dart - 진짜 다른 점 다 괜찮은데 망한 언어
  • Go - 언어는 괜찮은데 GUI 프레임웍이 없음

결국 개인프로젝트는 못 하는 걸로.. 이 상태가 몇 년 째

DART 언어

angular component, flutter 는 매력적. 언어 하나를 배워서 웹앱과 준 네이티브 모바일 앱을 만들 수 있다는 것은 큰 장점.

그러나 무슨 짓을 해도 떠오르지 않는 인기가 문제인데..

일단 개인프로젝트에 써보려는 중.

2018년 4월 11일 수요일

GCC와 Clang의 RAII

GLib 코딩을 하다가 g_autoptr() 이라는 매크로가 보이길래, C로 또 무슨 흑마술을 부렸나 살펴봤더니 RAII (Resource acquisition is initialization) 기법을 가능하게 하는 확장이 생겼습니다. cleanup 이라는 이름의 확장입니다. 다음과 같은 형태로 쓸 수 있습니다.


void clean_up(int *final_value)
{
  printf("Cleaning up\n");
  printf("Final value: %d\n",*final_value);

}

int main(int argc, char **argv)
{
  /* declare cleanup attribute along with initiliazation
     Without the cleanup attribute, this is equivalent 
     to:
     int avar = 1;
  */
  
  int avar __attribute__ ((__cleanup__(clean_up))) = 1;
  avar = 5;

  return 0;
}
다음에는 간단한 ref count 시스템을 만들어봐야겠군요 :-)