※ 들어가는 말

정렬은 검색과 더불어 컴퓨터가 인간에게 유용한 결과물을 내놓기 위해 내부적으로 가장 빈번히 수행하는 계산 동작에 속한다. 다른 알고리즘의 내부 과정으로 즐겨 쓰이기도 하고 말이다. 전산학 내지 컴퓨터 과학에서 정렬 문제가 얼마나 중요한지에 대해서는 더 말이 필요하지 않다.

정렬은 문제의 목표가 너무나 명확하고 실용적이며, 다양한 관점에서 문제의 접근이 가능하고 좋은 알고리즘과 나쁜 알고리즘의 차이도 아주 드라마틱하게 알 수 있기 때문에... 예로부터 그 특성과 해법이 연구될 대로 연구되어 왔다. 시간 복잡도 관념이 없던 초짜 프로그래머가 O(n^2)와 O(n log n)의 어마어마한 차이를 깨우치는 계기도 대체로 정렬 알고리즘을 공부하고부터이다.

n개의 원소에 대한 정렬 작업은 n개의 원소를 임의의 방식으로 늘어놓는 n!가지의 순열 중에, 원소들의 값 순서가 오름차순이나 내림차순이 유지되는 순열을 선택하는 작업이라고 볼 수 있다. 그리고 일반적인 정렬 알고리즘은 임의의 두 원소와의 비교를 통해 거기서 가능한 선택의 범위를 좁혀 나간다.

이런 원론적인 분석을 통해, 비교 연산 기반 정렬 알고리즘의 시간 복잡도는 아무리 기가 막힌 알고리즘을 고안하더라도 O(n log n)보다는 결코 더 좋을 수가 없다는 것이 증명되어 있다. 그리고 정렬 알고리즘 중, 제자리(in-place)라는 특성을 지닌 알고리즘은 교환(swap)이라는 동작도 공통적으로 사용하게 된다.

정렬 문제는 NP 완전 문제라고 알려져 있는 외판원 문제(TSP)에서 정점(vertex)들이 일렬로 쭉 나열되어 있는 특수한 경우라고 볼 수도 있다. 가까운 순서대로 순서대로 방문하는 게 정답일 테니 결국 정점들이 정렬된 것이나 마찬가지이다. 비록 domain이 1차원이 아닌 2차원 이상으로 가면 난이도가 곧바로 안드로메다 급으로 치솟지만 말이다.

※ O(n^2) 또는 O(n log n)인 비교 기반 알고리즘

역사적으로 굉장히 많은 수의 정렬 알고리즘이 고안되었으며 이들은 제각기 장단점과 특성이 있다. 알고리즘을 평가하는 주 잣대로는 자료 개수 n에 대한 시간 복잡도와 공간 복잡도가 있으며, 이들도 평균적일 때와 최악의 상황일 때를 따로 평가한다. 이 외에도 자료의 상태에 성능이 민감하게 달라지는지, 그리고 값이 같은 원소의 상대적인 순서가 보존되는지를 나타내는 순서 안정성(stability)을 따지기도 한다.

시간 복잡도가 O(n^2)에 속하는 정렬 알고리즘은 일명 '발로 짠 알고리즘'에 속한다. 직관적이고 구현하기 매우 쉬우나 성능이 쥐약이라는 뜻.
거품 정렬, 선택 정렬, 삽입 정렬이 대표적인데, 거품의 경우 배열이 아니라 아예 random access가 불가능한 연결 리스트 같은 컨테이너에다가 적용해도 좋을 정도로 바로 옆 원소와의 비교와 교환밖에 하지 않는다. 그 때문에 성능이 대단히 나쁘다.

선택 정렬은 비교에 비해 대입 연산이 적고 자료의 상태에 그리 민감하지 않은 게 특징이다. 그에 반해 삽입 정렬은 자료 상태에 따른 성능 편차가 크고 O(n^2) 알고리즘 중에서는 성능이 나은 편이기 때문에, 작은 범위의 입력에 한해서 종종 쓰이는 경우가 있다. 실제로 비주얼 C++의 qsort 함수 구현을 보면, 퀵 정렬을 쓰다가 구간이 8개 이하의 원소로 감소하면 거기는 삽입 정렬로 때운다.

O(n^2) 알고리즘들은 원리가 간단하기 때문에 공간 복잡도는 대체로 O(1)인 in-place이다. 한 쌍의 원소를 그때 그때 교환하기 위한 고정된 크기의 메모리밖에 쓰지 않는다는 뜻 되겠다. 시간이 비효율이면 공간 오버헤드라도 없어야 하지 않겠는가.

이론적인 시간 복잡도에 부합하는 O(n log n)급 알고리즘으로는 힙, 병합, 퀵 등이 있다. 이들은 시간 복잡도만 동일할 뿐 내부적인 특징은 정말 제각각이다.

일단 힙 정렬은 위의 세 알고리즘 중에서 유일하게 메모리 복잡도가 O(1)인 검소한 녀석이다. 그 대신 한 배열 안에서 왔다 갔다 하는 작업이 많아서 그런지 속도는 미세하게 다른 알고리즘보다 더 느린 편. 한 배열 안에서 heap 자료구조를 만든 뒤, 이것으로부터 정렬된 형태의 배열을 역순으로 만드는 두 단계의 과정이 무척 기발하며, 인간의 머리로 어째 이런 걸 생각해 낼 수 있는지 놀라움을 느낀다.

병합 정렬은 동급 시간 복잡도 알고리즘 중에서는 꽤 직관적인 편이고 또 유일하게 안정성도 있어서 좋다. 그러나 FM대로 구현한 녀석은 배열 복사본이 하나 더 필요하기 때문에 메모리 복잡도가 O(n)이나 되며, 대입에 대한 비용이 큰 자료구조에 대해서는 성능 하락의 폭이 큰 게 흠이다.

※ 퀵 정렬

한편, Tony Hoare이라는 영국의 전산학자가 1960년대에 20대 중반의 나이에 고안한 퀵 정렬은 정렬 알고리즘계의 종결자, 야생마, 이단아 같은 존재이다. pivot이라 불리는 중간값을 설정하여, 주어진 구간을 “pivot보다 작은 값, pivot, pivot보다 큰 값” 조건을 만족하게 swap 연산을 통해 바꾼다. 그 뒤, pivot을 기준으로 구간을 양분하여 양 구간도 재귀적으로 똑같은 작업을 한다. 알고리즘도 너무 명쾌하고 깔끔하지 않은가?

이 알고리즘은 대충 부분적으로 정렬되었거나 아예 완전히 무작위인 데이터에 대해서 매우 대단히 좋은 성능을 자랑한다. 그러나 pivot을 어떻게 정하느냐에 따라서 알고리즘의 성능이 크게 좌지우지되며, 자료의 상태에도 매우 민감해진다는 점이 간과될 수 없는 특성이다.

pivot이 데이터의 적당한 중간값으로 설정되지 못하고 하필이면 최소값이나 최대값으로 설정된 경우, 알고리즘 수행 후에도 구간은 깔끔하게 양분되지 못하고 하나씩만 줄어들게 된다. 이 경우 알고리즘의 수행 시간은 O(n log n)이 아니라 O(n^2)에 가까워진다! 역순으로 정렬된 데이터를 정렬하는데 구간의 맨 앞이나 맨 뒤의 값을 pivot으로 쓴다고 생각해 보자.

문제는 이때 시간 복잡도만 늘어나는 게 아니라는 것이다. 분할 정복법을 쓴다는 특성상 퀵 정렬은 재귀호출을 써서 구현되는데, 구간이 반씩 시원하게 안 쪼개지고 하나씩만 쪼개지면 재귀호출의 깊이도 자칫 n회가 될 수 있다는 뜻이다. 이 경우 프로그램은 stack overflow 오류가 발생하며, 이는 프로그램의 보안에도 악영향을 끼치게 된다.

다만, 쪼개진 구간 중에 원소 수가 많은 구간이 아니라 의도적으로 적은 구간부터 골라서 재귀적으로 처리하는 경우, 메모리 복잡도는 O(log n)으로 원천적으로 줄일 수 있다. 퀵 정렬 함수의 구현체 자체에 딱히 동적 배열 같은 게 없더라도 재귀호출 때문에 메모리 복잡도가 올라가며, 원소들이 정확하게 반씩 분할될 경우에 log n에 해당하는 깊이까지 간다는 뜻이다.

일반적으로 퀵 정렬의 구현체는 그냥 구간의 정중앙에 있는 원소만 pivot으로 지정하는 게 보통이다. 이렇게만 하더라도 O(n^2)의 최악 시간 복잡도를 만드는 입력 데이터를 일부러 만들기란 대단히 어려우며, 수학적으로 발생하기도 불가능에 가까운 건 사실이다.

하지만 공격자가 퀵 정렬 구현체의 알고리즘을 알고 있는 경우, 의도적으로 해당 알고리즘이 pivot을 요청할 만한 위치에 일부러 구간의 최대값이나 최소값을 집어넣어서 매 단계별로 퀵 정렬을 엿먹이는 게 불가능하지는 않다! 세상엔 그것만 전문적으로 연구한 사람도 있다. anti quick sort라고 검색해 보셈.. 이것이 퀵 정렬의 진정 오묘하고 이상한 면모라 하겠다.

이걸 이용하여 비주얼 C++의 qsort 함수로 테스트하면, 평소 같으면 인텔 i5 기준 눈 깜짝할 사이에 끝나는 정수 10만 개의 정렬이 수 초 대로 떡실신하는 기현상이 벌어지는 걸 볼 수 있다. 그런데 xcode의 C 라이브러리가 제공하는 qsort는 퀵 정렬을 쓰지 않는지 그런 것의 영향을 받지 않더라..

※ C/C++ 언어에서의 지원

C 라이브러리에 있는 qsort 함수는 콜백 함수에 전달해 줄 사용자 데이터--가령, 비교 옵션 같은 것--를 받는 부분이 없어서 무척 불편하다. 그래서 별도의 사용자 데이터는 전역 변수나 TLS(thread local storage)를 통해 얻어 와야 하는 번거로움이 있다. 이것이 비주얼 C++ 2005부터 도입된 qsort_s에서는 개선되었다.

한편, C++ 라이브러리에도 잘 알다시피 std::sort라는 함수가 있다. C 함수보다 type-safe할뿐만 아니라 iterator를 통해 포인터보다 더 추상적인 자료형도 정렬할 수 있으며, 비교도 직관적인 비교 연산자 아니면 functor로 편리하게 지정할 수 있어서 좋다. 또한 이건 템플릿 형태이기 때문에 정렬 코드가 해당 프로그램의 번역 단위에 최적화된 형태로 embed된다는 것도 더욱 좋다.

C의 경우 비교 연산 함수의 리턴값은 뺄셈 연산을 모델로 삼아서 '음수, 0, 양수' 중 하나를 되돌리게 되어 있다. 그러나 C++ 버전은 < 연산을 모델로 삼아서 그냥 true/false boolean값만 되돌리면 된다는 차이가 있다. 사실, 그것만 있어도 정렬이 되니까 말이다.

C++ 라이브러리에는 sort뿐만이 아니라 stable_sort도 있다. 하지만 실생활에서 꼭 stable_sort를 써야만 할 상황이 있는지는 모르겠다. 실제로 정렬 성능은 굳이 안정성이 지켜지지 않아도 되는 sort가 더욱 뛰어나다.

※ 기타 정렬 알고리즘

정렬 알고리즘의 시간 복잡도는 굳이 O(n^2) 아니면 O(n log n) 중 하나로만 떨어지는 게 아니다. 그 범주에 속하지 않는 대표적인 알고리즘은 셸 정렬이다. 고안자의 이름을 따서 명명된 이 알고리즘은 삽입 정렬이 대충 정렬된 자료에 대한 성능이 뛰어나다는 점을 응용하여, 삽입 정렬을 일정 구간별로 띄엄띄엄 반복해서 적용해 준 뒤 최종적으로 삽입 정렬을 full scale로 한번 돌려서 정렬을 끝낸다.

퀵 정렬이 pivot을 정하는 것이 판타지라면, 셸 정렬은 그 구간을 정하는 방식이 판타지이다. 셸은 분명 O(n^2)보다는 훨씬 더 뛰어난 성능을 보이지만 그렇다고 O(n log n)급은 아니다. 사실, 셸은 구간을 어떻게 설정하느냐에 따라서 시간 복잡도를 계산하기가 대단히 chaotic하고 어렵다.

구간을 두 배씩 좁히는 게 제일 나쁜 방법이이기 때문에 최악의 경우 도로 O(n^2)까지 떨어져 버리나, 약간 머리를 쓰면 O(n^1.5) 정도는 된다. 구간을 가장 잘 잡았을 때 최대 O(n (log n)^2)까지는 갈 수 있다는 것이 알려져 있다. 그래도 셸은 메모리 복잡도가 깔끔한 O(1)이고, 코딩이 상당히 짧고 간결하면서도 O(n^2)보다는 성능이 확실히 낫다는 데 의의가 있다.

앞서 말했듯이 정렬 알고리즘의 시간 복잡도의 한계가 O(n log n)이라는 것은 비교 연산을 사용하는 일반적인 알고리즘이 그렇다는 소리이다. 그런 방식으로 정렬을 하지 않는 알고리즘의 경우, O(n)짜리 알고리즘도 충분히 존재할 수 있다.

가령, 데이터의 도메인이 메달이어서 '금, 은, 동'이라는 세 종류밖에 없는 경우, 자료를 일일이 뒤져 볼 필요 없이, 각 메달의 개수를 세어서 금 a개, 은 b개, 동 c개라고 써 주기만 하면 될 것이다. 부동소숫점이나 문자열처럼 도메인이 굉장히 넓은 자료형은 그런 식으로 정렬할 수 없겠지만, 좁은 범위의 정수 정도면 그런 식으로 발상을 전환하여 비교 연산을 요청하지 않는 정렬 알고리즘을 쓸 수도 있다.

여기에 속하는 대표적인 알고리즘은 기수(radix) 정렬이며, 이 외에도 유사한 전략을 사용하는 알고리즘이 더 있다.

정렬 알고리즘에 대해서는 메아리 풉에도 수학적으로 더 엄밀한 개념 기술이 있으므로 참고하시고, 또 이 홈페이지에는 이미 아시는 분도 있겠지만 본인이 학부 시절에 정렬 알고리즘 모음집이라는 간단한 프로그램을 짜서 올려 놓은 게 있다. 일부 검색엔진에서는 '사이트'로도 등록되어 있다. ㅎㅎ 관심 있으신 분은 거기 소스도 참고하시기 바란다.

* 여담이지만, 전산학 덕후와 해커들의 머리 싸움 덕질에는 끝이 없는지라, 퀵 정렬뿐만 아니라 hash 알고리즘을 엿먹이는 연구도 이미 될 대로 돼 있다.. 특정 해싱 알고리즘에 대해서 충돌만 골라서 일으키는 입력을 생성하는 것 말이다.

Posted by 사무엘

2012/10/04 08:24 2012/10/04 08:24
, , ,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/740

(上에서 계속.. 현대 자동차 얘기를 하고 있었다.)

현대에서는 포니 2에 이어 후속 모델로는 프레스토와 엑셀이 나왔고, 중형차로는 국내 최장수 자동차 브랜드인 쏘나타가 탄생했다. 쏘나타도 그 전신은 코티나 마크 V의 파생형인 '스텔라'이지만, 후속 모델로 갈수록 미국 차와의 유사성은 없어지고 독창성이 증가했다.

한편, 당대의 최고급 모델이던 (각)그랜저는 미쓰비시 사와 공동 개발하여 동일한 차량을 한일 각국에서 서로 다른 브랜드로 시판했다. 처음엔 2000cc급만 나왔다가 2400cc와 3000cc 모델도 추후에 개발되었다. 오늘날이야 그랜저는 제네시스나 에쿠스에게 기함 타이틀을 내 주고, 그냥 쏘나타보다 약간 더 비싼 중대형급에 머물러 있지만, 사람들에게 각인되어 있는 그랜저의 이미지는 굳건하다.

또한 철덕이라면 그랜저와 새마을호 전후동력형 디젤 동차 사이에 매우 유사한 심상이 느껴질 것이다. 둘 다 등장 시기(1986 vs 1987)부터가 아주 유사하며 목적도 동일하다. 서울 올림픽을 앞두고 각각 최고급 승용차와 최고급 호화 열차가 필요했기 때문이다. 세월이 흘러 지금은 그때보다 굉장히 대중화(?)와 서민화가 진행되었지만 그래도 고급 물건의 대명사로 통용되고 있는 것도 공통적이다.

자동차 산업 합리화 조치가 풀린 뒤엔 포터(1톤)와 마이티(2.5톤) 트럭을 만들어서 기아의 봉고/타이탄과 경쟁하였다. 포터는 '짐꾼'이라는 뜻이고 마이티는 왈도체의 '힘세고 강한 아침' 할 때의 '힘센'이라는 뜻이니, 다들 트럭으로서는 적절한 작명이라 여겨진다. 한편, 그레이스라는 소형 승합차는 디젤 엔진으로 휘발유 엔진에 필적하는 정숙함을 구현해 내어 그 당시로서는 꽤 발전된 기술을 선보였다고 한다.

그리고 Aero City라는 대형 버스를 만들어서 대우 버스와 경쟁하는 양대 산맥을 구축했으며, 일본 차량을 기반으로 갤로퍼라는 SUV도 만들어서 쌍용 코란도를 제쳤다. 단, 갤로퍼는 현대 자동차가 아니라 '현대 정공'에서 제작하여 '현대 자동차 써비스'라는 다른 계열사와 다른 파생 회사에서 판매하는 형태였기 때문에, 전통적인 현대 자동차 라인의 제품이 아니다.

아래 그림에 나와 있듯, 현대 버스(왼쪽)는 대우 버스(오른쪽)와는 달리, 전통적으로 바퀴 위쪽의 차체 윤곽이 완전한 원호를 이루어 동그랗다는 특징이 있다.

사용자 삽입 이미지사용자 삽입 이미지

이렇게 기술을 개발해 나가던 현대에서는 부품의 국산화 비율을 차츰차츰 높인 끝에, 드디어 설계부터 프레임, 엔진까지 모든 공정을 국산화하여 로얄티를 지불하지 않는 차를 내놓는 경지에 이르렀다. 그 첫 작품이 바로 엑셀의 후속 모델 소형차인 액센트(1994)이다. 포니가 자체 모델이라면, 액센트는 자체 개발이다. 자동차계의 KTX 산천 및 서울 지하철 609편성인 셈이다.

포니를 만들던 그 회사가 이제는 제네시스와 에쿠스를 만드는 경지에까지 이르렀다. 그 결실을 위해 공돌이들을 얼마나 갈아 넣었는지 나로서는 알 길이 없지만, 어쨌든 존경스럽다. 비록 국내에서 워낙 독보적인 위치에 있어서 가격 횡포도 많이 부리고, 이 때문에 현대라는 기업을 싫어하는 사람도 적지 않지만 말이다.

에쿠스야 1세대 '각진' 모델은 과거의 그랜저처럼 미쓰비시와의 공동 개발이지만, 제네시스는 현대의 독자 개발 모델이며 에쿠스도 2세대 모델은 외형이 제네시스와 더 비슷해져 있다. 제네시스와 에쿠스는 현대 차임에도 불구하고 외제차처럼 보이게 하려는 의도인지 차 주변에 현대 앰블렘이 보이지 않는 게 특징이다.

사용자 삽입 이미지

※ 쌍용 자동차

신진 자동차, 동아 자동차를 거쳐서 지금의 쌍용이 된 기업이다. '더블 드래곤'은 엄밀히 말하면 '쌍룡'으로 표기하는 게 맞으나, 어차피 저건 고유명사이니 굳이 꼭 맞출 필요는 없다.
여기는 잘 알다시피 코란도라는 4WD SUV 외길 브랜드만 밀어 온 기업으로 유명하다. 물론 옛날에는 자동차 산업 합리화 조치 때문에 쌍용에 배당된 차종 TO는 저것밖에 없어서이기도 했고. -_-;;

옛날에 4WD 차량은 “전쟁 났을 때 국가에서 군용차로 징발해 간다. 그 대신 차의 덩치에 비해 각종 세금은 파격적으로 감면”이라는 조건이 걸려 있었다. 그래서 전쟁 안 날 거라 믿고 코란도를 장만한 사람들도 적지 않았다. 물론 지금은 다 옛날 얘기가 됐지만.
그리고 코란도라는 이름은 “KORean cAN DO”라는 애국심 드립에서 유래되었다는 걸 혹시 아시는가? 어렸을 때 차 카탈로그에서 본 기억이 있다.

사용자 삽입 이미지
추억의 1세대 코란도.

나중에는 같은 SUV 차종 안에서도 코란도 패밀리라든가 무쏘라는 다른 차를 내놓기도 했으며, 소형 승합차 이스타나, 그리고 고급 승용차 체어맨을 만들었다. 그러나 자체 기술이 부족하여 주력 차종인 SUV에서 현대에게 추월당하고 주춤하다가, 중국 상하이 자동차에게 매각+처참한 먹튀를 당했다. 그리고 최근엔 잘 알다시피 구조조정+장기간의 파업 사태 때문에 기업 이미지가 상당히 나빠져 있다. 위기를 잘 극복해야 할 텐데.

공장이 평택에 있는 건 파업 사태와 관련된 뉴스 보도 때문에 알게 됐다.

※ 르노 삼성 자동차

삼성은 삼성 전자를 등에 업고 있는 굴지의 대기업이지만, 이 그룹의 회장님은 롤스로이스와 마이바흐를 굴리는 굉장한 자동차 덕후였으며 자기 회사에서 자동차까지 만들고 싶어하고 있었다. 그래서 1990년대 말에 자동차 계열사를 만들었지만, 이미 국내의 차 시장은 포화 상태였고 IMF까지 터지면서 삼성 자동차는 제대로 돌아갈 수가 없었다. 그래서 르노라는 외국 회사가 이를 인수하여 르노 삼성 자동차가 된 것이다.

자동차를 처음부터 혼자 만들 수 있는 회사는 없으니 여기서도 주로 일본 닛산 자동차를 현지화하여 생산· 판매하는 형태였다. 생산되는 승용차는 잘 알다시피 SM_n이라는 형태로 작명되었으며, 특히 현대 계열사를 싫어하는 사람들이 그 대안으로 삼성 차를 선호했다고 회자된다.
하지만 지금은 여전히 회사 사정이 안 좋아서 직원들을 상대로 희망 퇴직도 받고 있는 모양이다. 공장은 부산 강서구에 있음.

※ 아시아 자동차

아시아 대학교만큼이나 지금은 사라진 회사 이름이지만, 그렇다고 그 대학처럼 막장 행보를 간 회사는 물론 아니었다.
금호 그룹만큼이나 국내에 얼마 안 되는 호남 기업 중 하나이다. (그래서 공장도 광주에~!) 그러고 보니 아시아나 항공도 이쪽 계열사인데, 이 이름도 '아시아'에서 유래되었다. ㅎㅎ

1970년대에는 이탈리아의 피아트를 판매하다가 나중에 기아 자동차에 인수되었다. 둘 다 기업 앰블렘이 비슷하게 생긴 게 이 때문인 듯하다. '록스타'라는 SUV, 콤비· 코스모스라는 버스, 타우너라는 트럭이 이 회사의 제품이며, 특히 대형 버스 그랜버드는 오늘날까지도 살아 있는 브랜드이다. 쌍용이 SUV라면 아시아는 버스인 듯.

내가 초등학생일 때까지만 해도(지금으로부터 20년쯤 전~!) 아시아 자동차에서 만든 시내버스를 어렵지 않게 볼 수 있었고, 차내의 선바이저(sun visor)에는 “여행은 아시아 자동차 버스로”라는 문구가 적혀 있기도 했다. 아래 사진을 참고하라.

사용자 삽입 이미지

.
.
.

컴퓨터를 살펴보면 과거에는 PowerPC, Alpha, MIPS 등 여러 아키텍처가 있었다. 그러나 지금은 그냥 닥치고 x86(-64) 아니면 ARM밖에 살아남은 게 없다. 프린터는 HP 말고 다른 제조사는 가히 듣보잡으로 전락했고, 그래픽 카드는 nVIDIA에 기껏해야 ATI나 인텔 말고 지금 생존한 물건이 있나?

그런 것처럼 자동차도 과거에는 생각보다 다양한 제조사들이 존재하였으나, 지금은 기술과 자본줄이 탄탄한 한두 업체 말고는 다들 몰락했다. 사실은 어느 분야라도 안정화가 되고 나면 그렇게 되는 것 같다. 이 와중에 시종일관 살아남았고, 완전히 새로운 차를 밑바닥 부품부터 스스로 다 설계하고 창조하는 경지에까지 다다른 국내 기업은 사실상 현대가 유일하다.

물론 그게 전적으로 현대의 기술과 노력만으로 이루어진 건 아닐 것이다. 보호 무역 버프는 말할 것도 없고, 국가로부터 지원과 특혜도 엄청 받았을 것이며 “내수는 비싸게, 수출은 싸게” 식으로 온 국민이 간접적으로 국내 기업을 육성하는 데-_- 일조도 했을 것이다.

하지만 반대로 생각해 보면, 그런 특혜를 입지 않고서야 이미 수십년 이상의 격차가 존재하는 외국의 넘사벽급 자동차 기술을 어떻게 따라잡겠는가? 또한 그렇게 혜택을 처묵처묵하고도 먹튀하는 막장 기업도 많은 판에, 현대 정도면 그래도 다른 기업들보다 기술을 중시하여 성장도 많이 했다. 그로 인한 막대한 양의 수출+일자리와 국부 창출은 덤이고 말이다.

어쩌다 보니 현대를 좀 칭찬하는 논조가 되고 말았는데, 난 딱히 현대 자동차의 이익을 대변하는 사람이 아니며, 그저 “깔 건 까고 인정할 건 인정하자”라는 중립적인 시각임을 밝힌다. 철도 때문에 지금까지 상대적으로 가려져 있던 자동차 쪽 덕질을 오랜만에 해 보니 재미있다. ^^

Posted by 사무엘

2012/10/01 19:32 2012/10/01 19:32
, ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/739


블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2012/10   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Site Stats

Total hits:
3940484
Today:
1152
Yesterday:
2118