Page 15 -
P. 15

글(Google)은 안드로이드 플랫폼의 공식 지원 언어로 코틀린을 선택했다. 이로 인해 코틀린 언어
                    사용자가 엄청나게 늘어났고 현재 구글, 아마존(Amazon), 넷플릭스(Netflix), 핀터레스트(Pinterest),
                    우버(Uber) 등 여러 회사가 프로덕션 개발에 코틀린을 사용하고 있으며, 코틀린 개발자를 채용하                            1

                    려는 회사가 계속 늘어나고 있다.
                    이 모든 일을 이룰 수 있었던 것은 언어를 주의 깊게 설계하고 언어의 주요 특성에 그 설계를 녹
                    여 내기 위해 헌신적으로 노력했기 때문이다. 이러한 노력으로 인해 코틀린은 아주 훌륭한 개발자                              강력하고 실용적인 코틀린

                    도구가 됐다. 언어 철학은 2010년 코틀린이 마주했던 문제에서 주로 기인한다. 그 당시 젯브레인
                    즈에는 인텔리J 플랫폼을 중심으로 하는 자바 코드 기반이 누적돼 있었는데, 여기에는 가장 잘 알
                    려져 있는 인텔리J IDEA뿐만 아니라 웹스톰(WebStorm), Php스톰(PhpStorm), 루비마인(RubyMine)

                    등의 마이너한 IDE도 포함됐다.
                    하지만 코드 기반의 성장과 유지 보수는 자바 언어 자체로 인해 방해받기 시작했다. 자바의 발전
                    이 느렸고 2010년 당시 스칼라나 C# 등의 언어에서 사용할 수 있었던 유용한 기능이 자바에는 없

                    었기 때문이다. 당시 사용 가능한 JVM 언어를 검토해본 젯브레인즈는 자신의 필요를 충족할 만한
                    언어가 없다는 결론을 내리고, 그에 따라 자원을 투입해 지신만의 언어를 개발하기로 결정했다.
                    새로운 언어에는 개발 팀원의 상당수가 위치했던 러시아 상트페테르부르크 근처의 섬인 ‘코틀린’

                    이라는 이름이 붙었다.
                    그렇다면 처음에 코틀린 언어를 만들어간 특징은 무엇일까? 사실 코틀린 언어 정의에서 이미 그

                    특징을 이야기했다. 코틀린 개발을 뒷받침하는 이유는 안전성, 간결성, 상호 운용성을 강조하는
                    다중 패러다임 언어가 필요하다는 것이었다. 각각의 특징을 더 자세히 살펴보자.




                    1.1.1 안전성


                    프로그래밍 언어가 안전하려면 프로그래머의 오류를 방지할 수 있어야 한다. 실전에서 오류를 방

                    지하려면 대가가 필요하기 때문에 안전성을 고려해 언어를 설계하는 것은 트레이드오프(tradeoff)
                    의 문제다. 컴파일러에게 프로그램에 대한 정보를 더 자세히 알려주거나 컴파일러가 더 오랫동안
                    프로그램이 올바른지 추론하게 한다(또는 두 가지 다 할 수도 있다). 코틀린의 설계 목표 중 하나
                    는 황금비를 찾아내는 것이었다. 즉, 자바보다 더 안전성을 보장하는 언어를 설계하되, (자바보다
                    는) 개발자의 생산성을 덜 해치는 언어를 만드는 것이었다. 그리고 코틀린의 해법은 어떤 측면에

                    서든 절대적인 것이 아니었으나, 실질적으로 효율적인 선택임을 반복적으로 증명해 왔다.




                                                                                                  27





     Kotlin_05.indd   27                                                                     2022-02-15   오후 4:07:30
   10   11   12   13   14   15   16   17   18   19   20