<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
		<id>https://tcatmon.com/w/index.php?action=history&amp;feed=atom&amp;title=GuguClass</id>
		<title>GuguClass - 편집 역사</title>
		<link rel="self" type="application/atom+xml" href="https://tcatmon.com/w/index.php?action=history&amp;feed=atom&amp;title=GuguClass"/>
		<link rel="alternate" type="text/html" href="https://tcatmon.com/w/index.php?title=GuguClass&amp;action=history"/>
		<updated>2026-07-26T15:10:05Z</updated>
		<subtitle>이 문서의 편집 역사</subtitle>
		<generator>MediaWiki 1.28.0</generator>

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

	</feed>