문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [목차] == 개요 == [[앙큼한 돌싱녀]]에서 나와 프로그래머들에게 화제~~와 비웃음~~을 사게 했던 명장면(?)중 하나이다. [[생활코딩]]에서도 [[https://www.facebook.com/yoons702/videos/550660535052460/|인기(?)]]를 끌었다. [youtube(hIK9hVFKeDg)] > 차정우(배우 [[주상욱]])가 ~~[[간지폭풍|폭풍간지]]나게~~ [[타자]]를 치고 있다. > 차정우: 한 줄로 짤 코드를 누가 열 줄로 만들어놨어요? 에러 찾기 힘들게. (잠시 뒤) 코드가 길어서 프로그램만 무거워졌잖습니까? 이러니까 서비스가 버벅대지. ~~[[의사양반#s-2|아니 프로그래머 양반]] [[내가 고자라니|이게 무슨소리요!]]~~ 드라마 [[앙큼한 돌싱녀]]에서 차정우 역을 맡은 [[주상욱]]이 천재 [[프로그래머]]의 실력을 보여주는 엄청난 [[타자]] 속도로 ~~[[간지폭풍|폭풍간지]]나게~~ 서비스를 복구하는 장면이다... '''물론 훼이크다.''' 여기서의 웃음포인트는 두 가지인데, 처음에는 열심히 다다닥 코드를 치면서 말한 주상욱의 대사이다. 이게 왜 말도 안되는 소리냐면, 단순히 코드가 길어진다고 프로그램이 버벅대는 건 정말 프로그래밍의 기초도 모른다는 소리인데, 저런 소릴 지금 속칭 천재 프로그래머이자 떠오르는 소프트웨어 회사의 사장이라는 사람이 하다니(..) 마치 판사가 되겠다는 사람이 법이 뭔지 모르는것과 똑같은 소리이다. 게다가, 동영상을 일시정지하고 [[모니터]] 화면에 띄워진 코드를 보면 고작 [[Java]]를 이용한 '''[[구구단]] 출력 예제'''다. ~~작가는 프로그래밍을 무슨 벽돌깨기 정도로 생각했나보다.~~ ~~차라리 자바로 테트리스를 작성한 코드를 넣지~~ ~~그러면 코드가 길어진다~~ ~~주상욱 [[안습]]~~ 참고로 저 코딩 화면은 Notepad++에 띄워진 소스 코드를 백스페이스 꾹 눌러 지우는 장면을 촬영하고 그걸 거꾸로 돌린 것이다. 그래도 한글 워드프로세서가 아닌 프로그래머용 에디터를 띄워놓은 건 칭찬할 만 하다. 비전공자는 저런 에디터가 있단 사실을 잘 모른다. 작가가 그래도 프로그래머가 어떻게 일하는지 조금은 공부했다는 반증. 아예 몰랐으면 cmd창 띄워놓고 dir /s 나 누르고 있었거나 더 심하게는 "명령을 찾을 수 없습니다" 에러메시지가 죽 내려가는 막장 화면을 보여줬을 수도 있다. ~~PowerShell 스크립트 작성하고 테스트 중이었을 수도 있는데?~~ --근데 Hex에디터를 띄워놨으면 이 항목 자체가 만들어지지도 않았다.-- --근데 Hex에디터로 디버깅하면 헬로월드조차 기본 천줄이 넘는다-- || [[파일:attachment/GuguClass/GuguClass.jpg]] || || 엄청난 [[타자]]의 정체(...) || 위의 주석에 '게임 로딩 부분'이라고 쓰여 있는 것으로 보아 게임 코드의 일부인 것 같다. ~~[[구구단]] 게임?~~ ~~일부일까?~~ --로딩시간동안 지루하지 않게 구구단이나 암기하라는 배려-- 자바 파일에는 public class 선언부가 딱 하나만 들어갈 수 있으므로(한 파일에 public class선언부가 두 개 이상되면 컴파일 에러가 난다) 174번째줄 위쪽은 같은 내용을 반복해서 복붙한 것일 가능성이 있다. 겨우 구구단 하나 출력하자고 private 클래스를 백 줄 넘게 작성했을 가능성은 거의 없다는 걸 생각해보면 그렇다. 코드 내부에서 다른 사용자 정의 객체를 생성하는 줄이 하나도 안 보이는 걸로 봐서 더더욱. ~~자바로 구구단만 구현 할 줄 알면 천재 프로그래머가 될 수 있다~~ 차정우의 코드를 [[http://www.deculture.co.kr/archives/1522|분석하고 한 줄로 만든]] 사람이 있다. ~~차정우: 열 줄로 짤 코드를 누가 한 줄로 만들어놨어요?~~ 위에 링크가 깨졌는데 이 코드다. {{{ main = mapM_ putStrLn [show x ++ " x " ++ show y ++ " = " ++ show (x*y) | x <- [2..9], y <- [1..9]] }}} == [[이한석|제가 직접 한 번 해보겠습니다]] == 위 코드의 174번째줄 위쪽이 뭔진 알 수 없지만 일단 화면에 나온 코드만 복원(?)해보면 이렇게 된다. {{{ public class GuguClass { public static void main(String[] args) { System.out.format("%n < gugu>%n"); for(int j=1; j<=9; j++) { System.out.println(); for(int i=2; i<=5; i++) { // 2~ 5 System.out.format("%d X %d = %2d ", i, j, i * j); } } System.out.println(); // 줄바꿈 for(int j=1; j<=9; j++) { System.out.println(); for(int i=6; i<=9; i++) { // 6~ 9 System.out.format("%d X %d = %2d ", i, j, i * j); } } System.out.println(); // 줄바꿈 } } }}} 위 파일을 GuguClass.java 파일로 저장하고(대소문자 주의) javac GuguClass.java 해서 컴파일한 뒤에(JDK를 설치해야 함. 이거 설치하는거도 한 스트레스 하니까 정말 관심있는 사람만 해봅시다) java GuguClass 하면 결과를 볼 수 있다. 결과: {{{ < gugu> 2 X 1 = 2 3 X 1 = 3 4 X 1 = 4 5 X 1 = 5 2 X 2 = 4 3 X 2 = 6 4 X 2 = 8 5 X 2 = 10 2 X 3 = 6 3 X 3 = 9 4 X 3 = 12 5 X 3 = 15 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16 5 X 4 = 20 2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25 2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30 2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35 2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40 2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45 6 X 1 = 6 7 X 1 = 7 8 X 1 = 8 9 X 1 = 9 6 X 2 = 12 7 X 2 = 14 8 X 2 = 16 9 X 2 = 18 6 X 3 = 18 7 X 3 = 21 8 X 3 = 24 9 X 3 = 27 6 X 4 = 24 7 X 4 = 28 8 X 4 = 32 9 X 4 = 36 6 X 5 = 30 7 X 5 = 35 8 X 5 = 40 9 X 5 = 45 6 X 6 = 36 7 X 6 = 42 8 X 6 = 48 9 X 6 = 54 6 X 7 = 42 7 X 7 = 49 8 X 7 = 56 9 X 7 = 63 6 X 8 = 48 7 X 8 = 56 8 X 8 = 64 9 X 8 = 72 6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81 }}} 근데 이 코드에는 중복이 있으므로 더 줄일 수 있다. --차정우씨, 중복 코드가 있어서 프로그램만 무거워졌잖습니까? 이러니까 서비스가 버벅대지.-- --근데 3회 이하의 중복 코드는 중복해서 써놓는게 프로그램 수행 속도가 더 빠르다는 건 함정.-- --그냥 [[컴파일러]]한테 빠른 실행에 최적화하라고 시키면 알아서 코드를 손봐주신다. 고건 몰랐지?-- {{{ public class GuguClass { public static void gugu(int c) { for(int j=1; j<=9; j++) { System.out.println(); for(int i=c; i<=c+3; i++) { System.out.format("%d X %d = %2d ", i, j, i * j); } } System.out.println(); // LF } public static void main(String[] args) { System.out.format("%n < gugu>%n"); gugu(2); gugu(6); } } }}} 결과는 같음. 더 줄일 수도 있다. 한 줄을 한 번에 찍는 방법이다. --줄 수는 줄었지만 글자수는 늘었다.-- {{{ public class GuguClass { public static void gugu(int c) { for(int j=1; j<=9; j++) { System.out.format("%d X %d = %2d %d X %d = %2d %d X %d = %2d %d X %d = %2d\n", c, j, c++ * j, c, j, c++ * j, c, j, c++ * j, c, j, c * j); c-=3; } System.out.println(); } public static void main(String[] args) { System.out.format("%n < gugu>%n"); gugu(2); gugu(6); } } }}} ~~더 줄일수도 있다~~ ~~한줄이긴 한줄이다.~~ {{{ public class GuguClass {public static void main(String[] args) {System.out.format("%n < gugu>%n");for(int j=1; j<=9; j++) {System.out.println();for(int i=2; i<=5; i++) { /* 2~ 5*/System.out.format("%d X %d = %2d ", i, j, i * j);}} System.out.println(); /* 줄바꿈*/ for(int j=1; j<=9; j++) {System.out.println(); for(int i=6; i<=9; i++) { /* 6~ 9*/System.out.format("%d X %d = %2d ", i, j, i * j);}}System.out.println(); /* 줄바꿈*/}} }}} 자바로는 이 이상 줄이긴 어려워 보인다. 위에 한 줄로 만들었다는 사람은 [[Haskell]]을 사용한 듯 한데 언어를 바꿔치기하는 건 반칙.[* ghci에서 바로 입력할 때는 main = ...으로 하지 말고 let main = ...으로 임시 선언한 후 다음줄에서 다시 main을 실행하면 제대로 출력 될 것이다.] 왜 반칙이냐면, 소스코드는 줄어들겠지만 두 언어를 모듈 수준에서 통합하기 위한 링커 스크립트가 무지막지하게 들어가기 때문이다. scala, clojure 등의 언어는 클래스 수준 호환성을 보장해서 링커 스크립트가 따로 필요없지만 이것도 빌드 스크립트가 길어지는 건 막을 수 없다. 그럼 그것도 글자수 계산에 포함해야겠지? 언어 바꿔치기 해도 되고 모양 똑같이 안 맞춰도 되고 그냥 구구단만 나오게 할 거면 [[자바스크립트]]로 한 줄에 가능하다. 지금 당장 F12눌러서 자바스크립트 콘솔 띄우고 아래 코드를 복붙하면 구구단이 출력된다. {{{ for(i=2;i<=9;i++)for(j=1;j<=9;j++)console.log(i+"X"+j+"="+i*j) }}} 참고로 이 코드의 출력 결과는 위에 1번 항목 마지막에 한 줄로 만들었다는 그 사람의 출력 결과와 같다. [[Ruby]]언어로 더 짧게 된다. {{{ 2.upto(9){|i| 1.upto(9){|j| puts "#{i}X#{j}=#{i*j}"}} }}} 출처는 [[프로그래밍 언어/코드 예제#s-2.11]]. 위의 한줄짜리 코드의 출력에 상응하는 [[Java]]코드는 아래와 같다. 출처는 역시 [[프로그래밍 언어/코드 예제]]. {{{ public class Gugu { public static void main(String[] args) { for(int i=2;i<=9;i++) { for (int j=1;j<=9;j++) { System.out.println(i+"X"+j+"="+(i*j)); } } } } }}} 이 이상 프로그래밍 언어를 나열하면 위의 출처의 코드 예제들과 중복되므로 여기까지만 적는다. --웃자고 시작한 일에 죽자고 달려들다.-- == 관련 문서 == * [[앙큼한 돌싱녀]] * [[구구단]] * ~~[[개발자]]~~ * ~~[[생활코딩]]~~ * ~~[[프로그래머]]~~ * ~~[[코딩덕후]]~~ * ~~[[컴퓨터 관련 정보]]~~ * ~~[[프로그래밍]]~~ [각주] [[분류:프로그래밍]] GuguClass 문서로 돌아갑니다.