반응형

원문 : The future of programming 

http://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS7197890408


점점 더 번역을 할 수록 어렵다는것이 느껴진다.

의미는 이해가 가는데 말로 표현하고 글로 작성하는 부분이 여전히 부족한 점이 많다.

여러번 퇴고를 해야하는데.. 핑계삼아서 반복을 못한것도 하나의 원인인것 같다.


"누가 읽더래도 이해하기 쉽게 번역을 하자"!!

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


프로그래밍은 변화하고 있습니다. PC의 시대가 끝나고 소프트웨어 개발자들의 시대가 오고 있습니다. 그들은 수많은 장비와 업무 기능들, 그리고 기종에 따라 다른 접근방법들이 필요한 문제점들을 해결하고 있습니다. 데이터가 증가하는 지금 시대에, 많은 종류의 프로그래밍을 할 수 있는 능력은 모든 분야에서 점점 중요하게 여겨지고 있습니다. 그리고 프로그래밍도 더 이상 엔지니어 영역이라는 인식도 사라지고 있습니다. 

 앞으로 몇 년에 걸쳐, 저는 프로그래밍이 변화해 가는 모습과 그것이 영향을 미치는 요인을 연구해 보려고 합니다. 그리고 이 기사는 그러한 몇 가지 영향력에 대해 다루고 있습니다. 이러한 변화에 대한 의견이나 같이 할 연구할 의사가 있다면 언제든지 알려주기 바랍니다. 

우선 무엇을 먼저 해야 할까요? 목표는 다가올 10년동안 프로그래머들이 필요한 필수적인 기술과 그들이 우선시 해야 할 교육, 그리고 단기간의 경향과 장기적 변화간의 차이에 대해 서술하는 데에 있습니다. 

분산 컴퓨팅 

오늘날에 "평범한" 환경에서 개발을 한다는 것은 10년전과는 의미가 달라졌습니다. 웹 애플리케이션이나 모바일 또는 빅 데이터와 같은 환경이 생기면서 프로그램이 오직 한대의 컴퓨터에서만 사용한다는 생각은 바뀌게 되었습니다. 

그렇게 되면서 프로그래머들은 동시성, 락, 비동기 네트워크 통신, 프로토콜과 같은 문제들을 처리 하게 되었습니다. 가장 기본적인 웹 프로그래밍을 할 때라도 캐싱과 같은 친근한 문제와 마주치게 될 것입니다. 

이러한 문제들과 관련해서 우리는 컴퓨팅 스택에 있는 단계별 현상들을 볼 수 있습니다. 

상위 단계인 클라우드 컴퓨팅은 다양한 기계와 네트워크를 유지하는데 발생하는 번거로운 상황을 줄이기 위한 방법을 찾고 있습니다. 애플리케이션 개발 단계에서는 익숙한 패턴을 사용하여 프레임워크를 구현하고 복잡한 세부 내용들을 추상화하고 있습니다. 그리고 개발 언어 단계에서는 Go나 Scala 같은 언어가 제공하는 기능에 의해 동시성이나 네트워크 컴퓨팅이 좀더 간단해 지고 있습니다. 

디바이스 컴퓨팅 

주위를 둘러보면 당신이 가지고 있는 모든 전자 제품에는 프로세서와 프로그램을 가지고 있습니다. 그리고 당신의 컴퓨터 또한 그 중에 하나입니다. 모든 사람들이 제품에 내장된 프로그램에 관심을 갖지는 않지만 많은 개발자들은 분명히 모바일 폰으로 개발하기 위한 방법이 무엇인지 배워야 합니다. 가까운 미래에 자동차나 무인항공기안경스마트 더스트에 적용시켜야 할 수도 있습니다. 

심지어 기존의 컴퓨터 사용에서도 다양한 고급 데이터를 고속으로 처리하는 보조 프로세서로 GPU 수가 늘어나게 되면서 기존과 다른 프로그래밍이 필요해졌습니다. 다른 형태의 요인들은 다른 방법의 프로그래밍 접근을 요구하게 되었고 Hobbyist와 prototype들은 비슷하게 Arduino와 Processing이라는 하드웨어를 도입하게 되었습니다. 그리고 프로그래밍 언어들과 프로그래머들은 메모리의 부족, CPU 속도, 파워 소비, 주파수 통신, 실시간 처리 등과 같은 특별한 분야의 이슈들에 대해 미리미리 대응 해야만 했습니다. 

데이터 컴퓨팅 

오늘날 많이 사용하는 객체 지향 프로그래밍은 일반적으로 데이터에 적대적입니다. 이 방법은 접근하는 메소드를 통해 데이터를 감싸는 행위에 초점을 맞추고 있기 때문에 이전보다 데이터를 더 타이트하게 보호하게 됩니다. 수학적인 의미로 데이터는 행동이 없는 말 그대로 데이터에 불과하지만 C++이나 java와 같은 영역에서 개발자들은 데이터의 접근 방법에 대해 생각해야만 합니다. 

데이터와 데이터 분석의 중요성이 커짐에 따라 first class citizen 처럼 데이터를 처리하는 언어들의 인기와 사용이 증가하게 되었습니다. 그리고 분명히 R과 같은 통계적인 언어들도 이러한 흐름에 따라 사용이 증가하고 있습니다. 하지만 일반적으로 프로그래밍의 목적면에서 Python이나 Clojure가 데이터를 다루는데 더 쉽다는 의견이 대부분을 차지하고 있습니다. 

보편화된 컴퓨팅 

점점 많은 사람들이 프로그래밍을 하고 있습니다. 이 영리하고 수많은, 돌발적인 개발자들은 엑셀 매크로의 마법과 같은 기능과 자바스크립트 기술, IFTTT 또는 Zapier와 같은 웹 서비스를 지원하는 것들에 골머리를 앓고 있습니다. 그들은 소프트웨어 개발에 대해 약간 알고 있긴 하지만 그 이상 관심을 갖고 있지는 않기 때문이죠. 

이렇게 무심한 프로그래머들은 쉽게 문제들을 발생시키고 오랫동안 이런 문제들이 해결될 때까지 곤경에 빠지게 됩니다. 아무리 낙관적으로 생각해도 이건 짜증스럽고, 최악의 경우에는 고용주에게 책임을 묻는 경우도 발생하게 됩니다. 게다가 이건 프로그래머의 잘못도 아닙니다. 

프로그램이 작동 가능한 환경을 제공하는 사람들은 어떻게 더 나은 "돌발적인 개발자" 를 찾을 수 있을까요? 우리는 기존의 언어보다 새로운 개발 언어와 더 나은 프레임워크를 사용해야만 할까요? 이건 교육적인 문제인걸까요? 아니면 이건 문제가 아니라 단지 시기상의 문제일까요? 

Bre Victor"s work와 ScratchLight Table과 같은 프로젝트에서 다른 미래에 대한 힌트를 얻을 수 있습니다. 

위험한 컴퓨팅 

마침내, 우리가 소프트웨어 개발에 대한 지금의 접근 방법으로 만든 불안정한 계획을 시험해볼 가치가 있게 되었습니다. 두뇌가 오직 두뇌 안에서 풀 수 있는 문제들만 해결 할 수 있듯이 문제는 단순합니다. 오늘날 프로그래머가 되기 위해서는, 머릿속으로 생각해서 만든 프로그램을 실행시킬 수 있는 능력을 갖춰야 합니다. . 

만약 문제에 대한 영역이 점점 커지면 프레임워크를 사용해서 문제에 대한 영역을 줄이면 됩니다. 우리는 CPU 위에 운영체제를 설치하고 라이브러리들과 사용자 인터페이스들은 운영체제 위에서 실행합니다. 그리고 애플리케이션 프레임워크는 이들 라이브러리 위에서 실행되고, 웹 브라우저는 프레임워크 위에서 실행됩니다. 그리고 자바스크립트는 브라우저 위에서 실행되고 자바스크립트 라이브러리는 자바스크립트 위에서 실행됩니다. 여기에서 끝이 아닙니다. 

우리는 다른 쪽 위에 한 개의 찻잔을 쌓아 올리는 야심찬 웨이터와 같습니다. 바로 지금은 약간 흔들려 보일지도 모릅니다. 우리는 더 빠르고 강력한 CPU를 만든 것이 아니라 지난 10년전에 만들었던 같은 종류의 애플리케이션을 만들었을 뿐입니다. 그리고 결국 수많은 시스템들을 위험으로 몰아놓는 보안상 문제점을 프레임워크 상에 만들어 냈습니다. 

왜 우리는 컴퓨터를 사용하면서 불안한 문제점들을 만들고 프로그래머가 컴퓨터의 능력을 그들의 머리에서 활용할 수 있는 정도로만 국한시킬까요? 이런 소프트웨어의 관점을 바꿀 수 있는 방법이 있을까요? 

결론 

나는 미래의 프로그래밍을 연구하면서 이러한 트렌트를 지켜볼 것입니다. 만약 경험이나 관점을 가지고 있거나 다른 방법으로 연구를 하고 계신 분들이 있다면 의견을 듣고 싶습니다. 그리고 이 기사에 대한 의견을 남겨주면 감사하겠습니다.

728x90
반응형

+ Recent posts