운체 컴구 필수라면서요, 그래서 C 배워야 한다면서요..
근데 운체 컴구 어디에 필수냐니까 백엔드 스레드다룰때 필수라면서요..
근데 스레드가 C언어에서만 되는것도 아니잖아요??
그리고 운체 컴구에서 알려주는 스레드 동기/비동기, 뮤텍스, 세마포어
이런거 C/C++ 로 멀티스레드 짤때 필요한거지
다른 언어는 웬만하면 내장되어 있어서 구현도 쉽게 가능한데
도데체 어느 포인트에서 운체 컴구 공부가 더 필요한지 말씀 가능 하실까요??
아니면 내가 스레드에 대해 뭔가 더 알아야 할게 있을까요??
설명 끝까지 안해줘서 너무 궁금한데요..
말은 했으면 끝은 맺어줘야죠...
그래야 내가 잘못알고있는지 검증이 가능하죠
허언증븅신임 무시. 같은 통피인게 부끄럽다 - dc App
창피하시겠네요, 통피 번호가 같아서
속도 1도 상관 안하고 프로그래밍 하면 되는 영역이면 운체/컴구 필요없음. 근데 보통 필요하긴 하지. 왜 python은 thread는 I/O 작업시에만 동시성을 지원하는가, 왜 python은 정수 곱셈이 나눗셈보다 느린가, 뭐 이런거? 물론 별로 필요 없는 영역에서 일하는 사람은 배우는 시간에 본인 현업 공부하는게 낫다고 생각함.
사실 말씀하신 정도로 파이썬 쓸 정도면 그 모듈은 C/C++ 로 이미 짜고 있을 것 같아요 근데 웬만해서는 그정도 까지 갈 경우도 별로 없고.. 애초에 성능이 많이 필요한 시스템이면 파이썬으로 프로젝트를 시작하지 않을 가능성이 더 높죠... 적어도 한국에서는..
내가 아는게 c/python 밖에 없어서 두 개 기준으로 계속 설명하게 되는데, python도 컴구를 알면 속도 최적화 할 부분이 자주 있었음 ㅇㅇ 운체 까지 필요한 경우는 거의 못 본듯.
컴구도 사실 내가 순수 파이썬이 아닌 AI를 하다보니 numpy, tensorflow, torch를 쓸 일이 많다보니 생기는거지 순수 파이썬에서는 거의 신경 안써도 되긴하지
근데 운체 컴구, 스레드 핸들링 말고도 사용 할 일이 있나요...?? 제가 여기서 더 나아가서 머릿속에 있는건, 임베디드 개발할때 레지스터가 어쩌구 하면서 코드를 어쩌구 짜야 어셈블이 적게 만들어 진다던지.. 근데 이건 운체 컴구보단 컴파일러 관련 내용에 더 가까워보이지만.. 요즘은 리눅스 들어가는 임베디드 짤거면 굳이 그런것 까지 신경 쓸 일이 얼마나 있으려나 싶기도 하구요... 제가 아직 경험이 짧아서 그럴 수 있겠지만..
C기준으로 진짜 속도를 극한으로 올릴려면 컴퓨터구조에 맞는 코드를 짤 줄 알아야됨. 물론 최신 C컴파일러가 많은걸 해주지만 아직은 한계가 명확함 어느때는 if문이 빠르고 어떤때는 case문이 빠른지 판단. for문을 어떻게 쪼개야 할지 등등 보통 캐시미스를 최대한 줄이는 방향의 기법들임. 그외에도 메모리최적화등 컴구를 고려해서 짜야할 경우는 무궁무진함.
어우... 근데 이럴때 생기는 딜레마가 협업 고려해서 코드 가독성을 우선하느냐 최적화를 우선하느냐 이건데, 이 딜레마는 어떻게 해결하시나요?? 두마리 토끼를 다 잡는 경우는 잘 안나오나요?? 저희 회사에선 최적화 고민 해야 할 사람이 저 포함 둘 뿐이라... 나머지 사람들하고 맞춰 일할거 생각해서 제 경우에는 성능을 포기하는 쪽으로 코드를 짜고 있었거든요..
두개는... 양립하기가 힘들다고 봄. 내 분야에서는 실수 나눗셈하면 사형임. 다 정수형을 쉬프트하고 고정나눗셈 또는 비트연산으로 해결함.
당장 속도가 필요 없는 영역이면 당연히 가독성이 우선인거 같음 ㅇㅇ
아하.. 나눗셈 그러고보니, 나눗셈은 어셈블리어 차원에서는 원래 없는 개념이라서 나눗셈 함부로 막 하면 성능저하 온다고 했었죠?? 결국엔 저도 성능 챙겨야 할 때가 올거라서.. 공부하고 대비하긴 해야겠네요 감사합니다.
딱 아만보같다. 윗댓 게이말대로 속도 신경안쓰면 배울필요 없을듯. 자바언어만 하더라도 쓰레드 소개가나오는데
저도 아는게 여기까지밖에 없어서, 혹시 뭐 더 빠트렸나 싶었거든요 JAVA로 스레드풀 구현해봤고 C++ 로 현재는 임베디드에서 스레드풀 구현중이고 FreeRTOS 에서 Task 쓰면서 세마포어 써봤는데 굳이 구태여 요즘 임베디드 개발 말고는 성능 쥐어 짜며 개발하는 것 보단 생산성, 유지보수성이 더 중요하지 않나.. 그런생각이 들어서요
서비스기업에서 어플개발시 프론트쪽에서 비동기로 처리함. 그 많은 데이터가 핸드폰으로 오는데 1쓰레드로 처리한다고 생각해봐. 앱은 먹통이 된것 처럼 보이고 소비자들은 전부 앱이 엉망진창이라고 느끼겠지. 이런쪽에서 쓰리드 개념이 쓰임. 안드로이드에서는 쓰리드 대신 코루틴이 쓰이는거고
아 여기서는 c로 배워야 하냐가 쟁점 이였냐?? 그거에 대해선 모르겠네.. 쉐복 ㅈㅅ
ㄴㄴㄴ 말씀 감사합니다. 운체 컴구 에 대한 이야기가 오히려 더 궁금해서요. 내가 빠트린 포인트가 있나 확인하고싶어서요
하긴 웹 서비스는, 자바기준에선 톰캣이 알아서 스레드풀 돌려주니까 신경 덜 써도 되겠지만 어플은 그럴 수 있겠네요 이야기 들어보니 서버도 결국엔 대규모 트래픽 감당하려면 스레드풀도 모자라서 멀티 프로세스, 분산 컴퓨팅 들어가야 한다고 하던데 이쪽은 제 분야가 아니라서 말로만 들어도 후덜덜 하네요
운체 프론트도 아는게 좋은데