:: 게시판
:: 이전 게시판
|
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/11/05 14:13
컴공나오셨나요? 내용이 대부분 컴공에서 배우는 내용이군요.^^
전 8051 마이크로프로세서 다루면서 아~ C가 이런거구나 터득했다는...
10/11/05 14:27
흐흐... C++로 오면서, 콜 규약에 대해서 알게 되면, function pointer 에 대해서 신세계가 펼쳐집니다... 만,
C++0x로 넘어오면서, lambda라는 놈이 생겨서;;; 다 필요없게 됐습니다. (C#에는 진즉부터 있었죠) 지금은 제가 만든 엔진 다 들어엎는중.. 왜, 이렇게 편한걸 이제서야 만들어주는겨??!! 그리고... 알고리즘이라는건 일단 '알고 있는게' 중요하다고 생각합니다. 즉, 어떤 경우에 어떤 알고리즘을 써야 한다는걸 말이죠. 그 모든걸 직접 손으로 다 구현하기에는... 실무에서는 너무 시간이 부족합니다. 그때는 빨리 레퍼런스를 찾아서 가져다 쓰는게 훨씬 생산성이 좋겠죠... 그러라고 객체지향이니, 디자인 패턴이니... 하는것도 나온거라고 생각합니다. "STL을 쓰는건 개발자의 수치다" 라면서, 자료구조와 알고리즘을 일일히 다 직접 만드는 분도 봤는데;;; 그건 좀...;;;
10/11/05 14:19
모든 악의 근원 "pointer"
그리고 함수에서의 call by reference(& 배열변수)... 그래 봤자 이것도 pointer영역 구조체 사용시에 나오는 pointer...('->' 같은것들) 그놈의 (참조)주소가 문제지요... 중첩 포인터로 X차원 배열 만들려고 하면... @$@#$@!$ //저는 프로그래밍 언어 수업을 들으면서 대략 이해했죠... 알고보면 별거 아닌데... 쩝... 그런데 메모리 주소 영역은 논리보다 컴퓨터 구조론에서 더 자세히 다루지 않나요?
10/11/05 14:20
단맛 님//
저도 전자과입니다. 저희는 컴파일러를 안 줘서... -_-;;;; 초수강 땐 어셈블리 코딩을 구경했고, 재수강 땐 제가 오픈 소스를 찾아서 어셈블리 코딩한 것처럼 구라를 쳤습니다. 흐흐흐 shadowtaki 님// 동의합니다. 단지 C언어를 첫 언어로 배우실 때 어렵다는 분들이 많더군요. 전 그런 과정은 안 거쳤는데, 방학 때 동아리에서 날을 오래 잡아 포인터 강좌를 하는 경우도 있다고 들었습니다. 왜 그런가, 생각해 본 거고요.
10/11/05 14:23
신텍스는 당연한것이니까 그 자체가 어려우면 할말이 없어지니까요.
어딘가에서 보면 신텍스 자체만 익히고선 그것이 전부라고 생각하는 사람(거의 학생이죠)이 있긴 합니다. 저는 공부하는 방법을 권하는게 로직은 스탠다드 라이브러리에도 괜찮게 구현되어있는것이 많으니 그것의 작동논리를 익히고(사용법이 아니죠) (사실은 전공수업중 자료구조, 파일처리등에 보면 다 나와있긴 합니다만) 다음으로 IPC등의 시스템 관련을 익히면 초중급까지는 무난히 갈 수 있다고 봅니다.
10/11/05 15:04
그리고.. 나름 오래동안 게임 프로그래머로서 일하면서 느낀건... '언어' 자체가 중요한게 아니라는 겁니다.
저야 경력 시작 자체가 C++ 이었고, 10년이 넘도록 C++로 계속 일을 하고 있긴 합니다만, 필요하다면 자바, C#, 베이직... 으로 프로젝트를 진행하기도 하고, LUA, Python 등으로 스크립트 작업을 하기도 합니다. 요즘은 HLSL과 아주 전쟁중이지요.. ㅠㅠ 사실 한 가지 언어를 왠만큼 마스터했다면, 다른 언어를 사용하게 되더라도... 한달 정도만 문법을 익히면, 그 이후로는 레퍼런스북 옆에 끼고 왠만한 프로젝트 진행은 가능하게 됩니다. 물론 아주 능숙하지는 못하지만요. 프로그래머로서 더 중요한 것은, 어떤 문제를 만났을 때, 이것을 어떻게 해결할 것인지를 얼마나 빨리 도출해내느냐라고 봅니다. 그리고... 언어는, 프로젝트의 성격에 따라서 결정할 문제지, 어떤 언어가 어떤 언어보다 우월하다...는 사실 무의미하다고 생각합니다.
10/11/05 15:05
저는 C/C++만 하다가 JAVA를 처음 배우게 됐을때....
"아니 이걸 포인터로 하면 편한데 왜 이렇게 하는거지...?" 이런 생각 많이 했었다는...^^;;;
10/11/05 15:04
컴공 졸업을 앞둔 학생입니다. 선배들이나 여러가지 주위 얘기를 들어보면 이런 점 때문에 IT 가 힘들고 특히 코더가 힘든 것 같습니다. 사실 하드웨어가 강력해지고 좋은 언어와 언어툴 등이 나오면서 예전 처럼 최적화까지 안해도 대충 그럭저럭 돌아가는 코드 정도는 누구나 쉽게 만들 수 있게 되었죠. 그래서 요즘은 유지보수가 편리하게 코드를 작성한느게 관건인데 사실 이것도 위에서야 개발자 갈구고 개발자 노가다 하고 하면 신경쓰일 문제는 아니죠. 일단 개발자가 편하자고 코드를 오오피다 패턴이다 하면서 적용시키고 사용하는 거니까요.
사실상 냉정히 말하자면 코더의 시대는 갔다고나 할까요. 기술이 발전함에 따라 코더는 새로운 신기술, 즉 과학쪽이라기 보단 정말 기술직이 되어버리게 되었죠. 바느질 쩔게 하는 장인이 있더라도 제봉틀이 나오고 많은 사람이 쉽게 바느질을 할 수 있고 공장에서 제봉틀로 옷을 찍어 내면서 바느질 장인은 더 이상 장인이 아니게 되는 그런것과 비교할까요... 아무튼 저도 졸업앞두고 이생각 저생각 많이 들더군요. 취직해봤자 건전지 인간 밖에 안될거 같고 (건전지 다되면 버려지는....) 아주 잘해야 충전지 인간이 되겠지만 역시 죽도록 쓰여지고 나중엔 결국... ㅠㅠ
10/11/05 15:21
포인트는 제가 생각하기에 로우레벨 프로그램인 에셈블러레벨에서 발전된 형태인 구조적 프로그램 형태(C,파스칼)로 넘어오면서
구조적 프로그램의 가장 큰 장점은 함수 단위의 프로그램에 있어서, 효율적인 자료전달의 형태가 아닌것인가 생각됩니다. 에셈블리 프로그램에서는 프로그래머가 데이터 저장위치, 그것의 크기등을 알고 거의 모든 프로그램이 GOTO, 내지 BRANCH명령입니니다. 구조적 프로그래밍으로 넘어오면서, 구조적 구조로 프로그램을 가능하게 하는 기본 단위가 함수인데, 여기에서 간단한 데이터를 함수간에 주고받는 것은 문제가 되지 않으나, 좀 큰 데이터를 처리하는데에는 큰 문제가 생긴다고 보입니다. (함수간의 처리할 데이터 교환문제, 만약 포인터라는 신택스가 없다면) 그부분에 대해, 포인트라는 신택스는 너무가 적은 용량의 인수로, 각 함수간에 데이터를 교환가능하게 하고, 나아가서 함수자체의 호출도 함수 시작 위치(주소)만 알면 되기에 정말 효율적인 부분이라고 생각합니다. C언어의 포인트라는 부분을 컴파일러한 부분을 역에셈블링해보면, 거의 에셈블러 레벨의 효율을 가지고 있다고 생각합니다. 그리고 지금 임베디드 분야의 C언어들은 컴파일하면, 에셈블러만으로 작성한것만 거의 차이가 나지 않습니다.
10/11/05 15:18
저하고 너무나 비슷한 길을 걸으셨군요.
제가 올해 그렇습니다. 복학을 7년만에 하다보니 예전에 정말 열심히 공부한 C가 잘 기억이 안났습니다. 8년전 1학년때도 포인터, 구조체, malloc 나오면서 많이 어려워 했는데 그 부분을 제대로 못한게 지금도 후회됩니다. 올해 1학기에 C++을 스킵하고 바로 자바로 갔는데 자바가 포인터가 안나오는 대신 어렵기는 마찬가지로 어렵더군요. 지금은 객체의 다형성이니 Call by reference, Call by value 등 전체적인 개념은 이해가 되도 막상 코딩이 안됩니다. 그래서 전과를 계획하고 있습죠.... 군대에 오래있었더니 객체지향에 대한 개념은 무척 잡기 쉽더군요. "오늘은 1분대가 정화조 청소해!"
10/11/05 15:51
전 컴파일도 힘들었던 어셈블러랑 베이직세대라 C언어랑 포트란 77배울때의 감동을 잊을수가 없네요. 다만 포트란의 경우 칸 하나만 틀려도 프로그램자체가 돌아가지 않아서 이게 왜 안되지라고 갤갤댔는데... 지금은 다 잊어진 언어일뿐이군요.
10/11/05 16:21
프로그래밍 언어뿐만 아니라 인간의 자연어에도 해당되지만, 언어는 단지 의사소통 수단일 뿐이라는 걸 깨닫게 되더군요.
언어를 처음 접할 때는 그 존재의의를 잘 모르다 보니 형식을 따라가기에만 급급하게 되는데, 언어를 통해서 전달하고자 하는 의미와 의도를 이해하는 게 중요한 거 같습니다.
10/11/05 17:29
저는 쓰레드 처음 배울 때가 어렵더군요. 그 산을 넘기까지 오랜 시간이 걸렸습니다.
[+] 그리고 "c 컴파일러는 c 언어로 만들었다"란 말을 이해하는 데도 한참 걸렸습니다 ^^ "포인터를 이해할 수 있는 능력은 타고난다"란 말이 있을 정도인데, 사실 더 크게 본다면 프로그래밍 능력이란 것도 타고 나는 것 같습니다.
10/11/05 18:32
전 아직도 C로 짜면서 가장 어려운게 포인터와 Recursive(이건 어느 언어에나 통용되는 내용이지만;;;)가 도저히 머리속에 와닿질 않더군요.
특히 Recursive는 직관적으로 이해하기가 너무 힘들어서...DP와 그리디 프로그래밍에 대해서 배울때 머리 쪼개는줄 알았습니다 ㅠㅠ
10/11/05 23:22
음.. 글쎄요. 이야기하시는 게 뭔지 알긴 하겠는데, 그 정도 경지라는 게 그리 쉽게 얻어지는게 아니라 큰 공감이 가지 않습니다. 아이온님이 쓰신 글을 보니 상당한 실력이 있으시다는 건 알겠는데, 그건 아이온님의 실력인거고, 그렇게 접근하지 못하는 사람이 부지기수거든요. 그리고 아이온님의 실력이 어느 정도로 좋으신지 몰라 감히 이야기하지는 못하겠는데, C++같은 경우 예를 들면 솔직히 제 주변에 boost 제대로 다루는 사람 지금까지 한 번도 못 봤습니다(저는 감히 손도 못 대겠네요).
자료구조와 알고리즘은 분명히 프로그래밍의 핵심, 내공입니다. 하지만 이 내공을 겉으로 드러내기 위해서는 프로그래밍 문법에 대한 적확한 이해라는 외공이 필요하고, 이 부분은 또 별도입니다. 내공이 없으면 외공은 금방 부서지고, 외공이 없는 내공은 드러나지가 않습니다.
10/11/06 03:06
왠지 완전 공감이 가는 글이네요..
C에서 헤맸고, 헤매고 있고, 헤맬것이라고만 생각했었는데. 이번학기 베릴로그 언어를 배우고.. MIPS 를 설계하고있는데.. C가 그냥 커피라면 베릴로그는 TOP.. 베릴로그 자체는 그렇게 안어려워도 CPU설계한다는것이 참 ㅠㅠ 근데 원래 CS 쪽에서도 이거 하나요 ? 교수님 미워요 ㅠㅠ
10/11/06 11:18
이미 질문 답변 게시판에도 한번 글을 남긴 바가 있지만, 저는 절대 C++이 그렇게 사용하기 쉬운 언어라고 보지 않습니다. 아직도 지엽적인 문법 세부 사항을 확인해야 하는 상황이 오면 C++ 표준이나 서적들을 찾아볼 수 밖에 없거든요. 이를테면 멀티 쓰레드 프로그래밍을 좀 해보려면 volatile과 메모리 모델에 대해 C++ 표준이 보장하는 범위를 알아야 하는데, 이걸 처음 질문 받았을 때 찾아보지 않고 바로 답하는 사람은 한번도 못 봤습니다. 그리고 정의와 선언 간의 차이와 다중 상속된 클래스의 멤버 함수 포인터가 void*와 호환되지 않는다는 예외 사항이 결합되면 찾기 힘든 버그를 만들어 낼 수도 있죠. 이런 예외 사항(이른바 "미정의 사항")들과 직관에 반하는 문법들이 수두룩합니다. C++ 자체가 성능을 위해 간결함을 포기한 언어이기 때문에 어쩔 수 없는 부분입니다만.
저도 C++을 며칠 공부한 이후부터 지금까지 제가 생각하는 로직만을 기술하는데에는 별 어려움이 없었습니다만, 그것만 가지고는 C++가 필요한 영역을 전부 커버할 수 없는 것이 현실입니다. 어차피 그런 도메인이라면 C++이 아니라 Java, C#을 쓰는게 훨씬 간편하고 생산성이 높고요. 말씀하신대로 C++은 저수준을 알아야 이해할 수 있는 언어가 맞습니다만, 그 알아야 하는 범위가 생각하시는 것보단 훨씬 넓습니다. 컴파일러가 내 코드를 가지고 무슨 짓을 하는지 대강이라도 알아두지 않으면 언제 뒤통수를 맞을지 모르거든요. 여기에 표준 라이브러리까지 들어가면 이건 뭐... 또 C++의 본 목적인 "빠른 속도"를 얻으려는 목적까지 있다면 언어의 각 문법들이 기계어에 어떻게 매핑되는지까지가 모두 "알아둬야 하는 문법"의 영역에 들어가는거고요. 21세기가 시작되고 사람들이 괜히 Java로의 대이동을 한게 아닙니다. * ps. 저도 이렇게 말은 하지만 C++을 좋아하는 편입니다. 단지 문제점이 많고 어려운 언어라는 것을 인정하는거죠. 물론 이런 문제들은 프로그램에 대한 완벽한 통제권을 쥐는 댓가이므로 충분히 납득하고 잘 쓰고 있습니다.
10/11/06 18:42
현재 회사에서는 영업에 있지만..
윗글을 보면서.. 아 그랬지..맞아 이랬던거 같에..하는걸 보면.. 겨우 평점 3.0이지만..아.그래도 나 공대나온남자구나 하고 느낍니다.
|