CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·일본산당 ·방탄소년당 ·개발한당 ·자전거당 ·안드로메당 ·나스당 ·이륜차당 ·소셜게임한당 ·소시당 ·물고기당 ·골프당 ·클다방 ·덕질한당 ·바다건너당 ·요리한당 ·스팀한당 ·AI그림당 ·가상화폐당 ·노젓는당 ·패스오브엑자일당 ·AI당 ·WOW당 ·창업한당 ·키보드당 ·테스트당 ·육아당 ·여행을떠난당 ·콘솔한당 ·갖고다닌당 ·PC튜닝한당 ·3D메이킹 ·X세대당 ·ADHD당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

사용기

서비스/SW kotlin 언어 사용 소감 16

2018-11-13 18:34:57 수정일 : 2018-11-13 19:34:18 121.♡.69.149
pocketoy2

자바 100% 호환되는걸 큰 장점으로 삼는 차세대 언어중 하나인 

kotlin에 대한 사용 소감입니다.

작년에 썼던 글이라서 최신 버젼에선 혹시 달라진 점이 있지 않을까 기대되네요.

아 kotlin 작업 하고 싶은데.. 자바스크립트에서 벗어날 수가 없네요..


--------------------------------------------------------------------

kotlin은 정말 사람을 불타오르게 하는 언어다

왜 진작 배워서 적용해볼 생각을 못했을까 싶다.

자바와의 100% 호환성에서 오는 여유로움은 물론이고

inline 함수로 도모하는 다양한 편리함은 C/C++에서

자바로 오면서 잃어버렸던 것들을 완전히 되찾은 듯 하다.

코드가 너무나 아름다워진다.

inline 함수는 정말 두고두고 곱씹어 볼만한 깊은 맛이 있다.

다만 좀 짜증나는 구석도 여럿 발견된다.


1) expression에선 assignment 못하는 점

이게 kotlin 옛날 버젼에서는 가능했었는데 정식 버젼 되면서? 막힌 듯 하다.

이걸 왜 막았는지 이해가 안간다... 변수 하나 줄이고 한줄 코드 줄이는 중요한 요소인데..

뒤져보니까 smartcast 인가 뭔가가 어려워져서 이렇게 한 것 같은데...

아 그래도 너무 하잖아....


2) 함수 parameter를 var가 아니라 val (readonly)로 받는 점

이것도 좀 짜증난다. 이 역시 kotlin 옛날 버젼에서는 var로 받아서 필요에 따라

변수값 수정이 가능했던 것 같은데...

변수를 쓸데없이 하나 더 늘려써야 하는 괴로움이 있다. 

var param = param 이렇게 하면 해결가능하긴 한데..

괜히 한줄 더 쓰는 문제에다가.. 

워닝 때문에 예쁜 소스 코드에 괜히 색깔이 더럽게 되는 안타까운 일이...


3) for문을 옛날 타입으로 쓸 수 없는 것

이건 kotlin이 좀 오버를 하는 것 같다.

for ( ; ; ) 이 구문은 시대를 뛰어넘는 최중요 핵심 구문 아닌가? 이걸 없애고

for ( in ) 과 while로 퉁치다니 언어 개발자들이 오버하는게 아닌가 싶다.

그거 넣어준다고 해서 무슨 문제가 있다고...

물론 range 타입으로 그럭저럭 흉내는 낼 수 있지만.. 실제 개발에 들어가보니

애매한 경우가 너무 많다. for ( ; ; ) 가 아니고선 깔끔하게 해결 못할 경우가

너무 많다.


4) exception 처리가 엉망인 점

자바 100% 호환이라며 exception 처리가 왜 이리 엉망인가?

자바에선 문법의 일부로 포함되어 있는 함수 정의에서의 throws 구문이

kotlin에서는 애노테이션으로 구현되어 있고, 그러다보니 있으나 없으나 

아무런 동작의 차이가 없다... 자바에선 개발툴이 알려줘서 실수 안할

부분들인데 kotlin에선 실수로 exception 처리를 빠트리는 경우가 너무 많다. 

실제 exception이 발생해야만 아 여기에 익셉션 있었네 처리해야지 하고 

알 수 있다. 익셉션 발생을 나중에 아는 경우가 너무 많다.

이 부분이 제대로 처리 안된 채로 자바 100% 호환이라고 주장하는건 무리다.

런타임이 아니라 소스 편집중에 발생할 익셉션의 종류와 위치를 미리

알 수 있어야 한다... 자바에서도 되는게 kotlin에서 안된다니 이거 참...

게다가 NoSuchFileException같은걸 왜 kotlin에선 같은 이름으로 재정의

해놓는건지 모르겠다. 어느쪽이 import 되었는지 정확치 않다보니 당연히

catch에서 받았겠지 하고 생각했는데 못받는 경우가 빈번하다.

짜증 만발이다.


5) @JvmField 와 @JvmStatic의 귀찮음

자바 100% 호환이라지만 사람이 수동으로 신경써줘야 하는 부분이 너무 많다.

변수를 자바쪽에서 불러오기 위해서

일일이 앞에다 @JvmField와 @JvmStatic를 넣어줘야 하는 귀찮음이 힘들다.

빼먹는 경우가 너무 많다. 자바 없이 100% kotlin only로 작업하면 차라리 나을텐데...

pocketoy2 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [16]
성수동정씨
IP 103.♡.126.1
11-13 2018-11-13 18:47:03 / 수정일: 2018-11-13 18:53:44
·
(코알못이지만...) 4번에 쓰신 내용은 사실 Java 에서도 원체 논란이 많긴 했습니다. 그리고 최근의 추세는 checked exception 대신 unchecked exception 을 선호하는 편이고요. NoSuchFileException 은 아마도 Java 의 NSFE 가 NIO 쪽에 들어가있다보니(같은 의미의 exception 인데 NIO에서는 java.nio.file.NoSuchFileException으로, BIO에서는 java.io.FileNotFoundException 으로 나뉘어져 있죠) 범용적으로 사용할 수 있도록 repackaging 한게 아닐까 싶네요.
바나나쥬스
IP 223.♡.10.115
11-13 2018-11-13 18:55:21
·
for ( ; ; )을 잘 쓰면 코드가 아름다워지지만,
어째 저한텐 에러 주범이더군요ㅠㅠ
저같은 사람이 많아서 그러지 않았을까 싶다는...
/Vollago
삭제 되었습니다.
사진찍는개발자
IP 59.♡.86.133
11-14 2018-11-14 21:18:09
·
UI Thread, Work Thread에서 저거 돌리고 해제를 안 하는 초보분들이 많습니다. 환장합니다.
Caizer
IP 175.♡.22.188
11-13 2018-11-13 20:06:52
·
앱개발자 입장에선, iOS를 Swift로 개발하게되면... Kotlin과 서로 포팅할 때 효율이 쭉쭉 올라가는 경험을!... 싱글톤이나 데이터클래스도 너무 좋죠.
pocketoy2
IP 118.♡.3.17
11-14 2018-11-14 00:53:40
·
어쩌다보니 단점만 썼는데.. 제가 언급한 단점 이외엔 모두 다 축복같은 장점들뿐이죠.
세드나
IP 183.♡.164.47
11-13 2018-11-13 23:29:03
·
Kotlin이 자바를 배우지 않은 (매트랩을 업으로 썼고, 파이썬 배우고 있는) 비전공 초보자가 안드로이드 자작 앱을 만들어보기 위해 배워볼 만한 언어인지 궁금합니다.
pocketoy2
IP 118.♡.3.17
11-14 2018-11-14 00:50:01 / 수정일: 2018-11-14 00:55:58
·
코틀린은 결국 api들은 다 자바꺼 가져다 쓰는거라서요.. 문법 자체야 독자적이라고 할 수 있겠지만
네트웍 처리를 하든 파일 입출력을 하든 디비 접속을 하든 다 자바 api니까 자바 지식 없이 배우는건
무리라고 할 수 있을 것 같습니다. 대부분의 예제/라이브러리들은 자바로 되어 있고 코틀린에선
그걸 변환해서 써야하는 입장이라서요..
세드나
IP 183.♡.164.47
11-14 2018-11-14 01:15:27
·
역시 아직 무리인 것이었군요. 감사합니다 :)
가디
IP 39.♡.51.55
11-14 2018-11-14 16:10:32
·
역인 경우도 많습니다.
구글에서 Kotlin을 안드로이드 개발 공식 언어로 추가하면서, 요즘 나오고 있는 샘플 코드들은 Kotlin으로만 나오는 경우도 많아요.

Android Studio가 공식 개발툴로 바뀌고 이클립스로 개발하는게 사장된 것처럼, 장기적으로 안드로이드 개발은 Kotlin으로 다 대체 될거 같긴 합니다.
세드나
IP 183.♡.164.47
11-14 2018-11-14 16:44:10
·
결론은 시기상조지만 존버하면 된다는 것이군요 흐흐흐
아범테크
IP 121.♡.213.200
11-13 2018-11-13 23:58:39
·
for ( ; ; ) 은 저도 좋아하지만 이걸 점점 없애려는 추세같더군요.
특히 자바스크립트 요즘 분위기 보면 for ( ; ; ) 을 안쓰게 하려는 분위기인지라... 전 개인적으로 forEach 좀 별로인데...ㅠ
pocketoy2
IP 118.♡.3.17
11-14 2018-11-14 00:52:59
·
forEach 같은건 성능상으로도 손해를 봐야하는터라 저도 싫어합니다.
가디
IP 39.♡.51.55
11-14 2018-11-14 16:34:24
·
많이 느린가요?

밑에 글로 봐선 Range로 넣는 경우가 아니면, kotlin에선 for랑 forEach랑 별 차이 없는거 같은데요.

https://medium.com/@elye.project/kotlin-for-loop-vs-foreach-7eb594960333
pluto248
IP 182.♡.21.220
11-14 2018-11-14 01:27:44
·
kotlin이 확실히 차세대 언어이긴 하지만 java도 버전이 올라가면서 계속 발전을 하고 있어서 안드로이드에서 kotlin이 정착될 수 있을지는 개인적으로는 좀 의문이 들더라구요.
LinkeneitoR
IP 211.♡.55.156
11-14 2018-11-14 11:29:26
·
제가 kotlin을 안써보긴 했는데 for (;;)는 문법적으로 완벽하게 while로 대체가 가능하지 않나요?
while 들어가기전에 선언하고, 마지막에 반복문 끝나기전에 변수 바꿔주구요
물론 이게 직관적이지는 않지만요
pocketoy2
IP 121.♡.69.149
11-14 2018-11-14 13:39:44 / 수정일: 2018-11-14 13:41:42
·
for( ; ; )는 루프 회전에 필요한 모든 구문이 딱 한줄에 정리되니까요..
while을 쓰면 앞뒤로 코드가 분산되는데 이거 일일이 찾아댕기는게 좀 귀찮은 일이죠...
1줄이 3줄되는거라... 아니 사실 5줄 되는 경우도 많습니다.
for( ;; ) 쓰고 바디가 딱 1줄뿐이면 전체 코드가 딱 2줄로 끝나는데
이걸 while로 쓰면 { } 를 어쩔 수 없이 쓰게 되니까요.. (바디가 1줄로 안끝남)
2줄과 5줄(코딩 스타일에 따라 6줄)은 볼륨 차이가 크죠..
2줄로 끝나는 깔끔한 코드가 6줄로 늘어진다고 생각해보세요.. 짜증이 좀 나죠.
삭제 되었습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.