1. 용이성

  • 문법이 쉽고 간결해서 배우고 사용하기 쉽다.
  • 코딩 자체로는 쉽지 않지만 파이썬은 다른 언어들보다는 비교적 쉽다.
  • 범용 프로그래밍 언어이기 때문에 데이터 분석, 게임 개발, 보안 등 여러 곳에서 사용이 가능하다.

 

  • 자바 Life is Short!를 분리하고 출력하는 코드
public static void main(String[] args) {
    String msg = "Life is Short!";
        for(String m : msg.split(" "))
            System.out.println(m);
}

 

  • 파이썬으로 Life is Short!를 분리하고 출력하는 코드
msg = 'Life is Short!'
print(msg.split())

위와 같이 같은 기능을 각 언어로 했을 때 파이썬이 자바보다 간결하다.

 

2. 방대성

  • 파이썬을 사용하는 사람이 아주 많기 때문에 참고할 자료가 많다.
  • 우리나라를 포함하여 세계적으로 파이썬을 입문용 언어로 많이 사용하고 있는 추세다.
  • 파이썬은 제공하고 있는 라이브러리들이 많다.

 

 

 

 

 

 

3. 속결성

  • 빠른 개발이 가능하다.
  • 배우는데 걸리는 시간도 다른 언어에 비해 비교적 적게 든다.
  • 위에서 이야기 했듯이 제공하는 라이브러리들이 많아서 구현할 필요 없이 바로 가져다 쓸 수 있다.
  • 파이썬은 최대한 문법 구조를 단순화시키고 간결하게 만드는 것을 기본으로 하기 때문에 복잡한 코딩이 필요없다.

'프로그래밍 언어 > python' 카테고리의 다른 글

Python(1) - 파일  (0) 2021.02.03
[프로그래머스] 카펫  (0) 2021.01.20

현재 만들고 있는 팀 프로젝트의 어플은 '채팅'이 메인 기능이다. 마침 내가 맡은 담당 파트도 '채팅' 파트이다. 코드를 짜기 전에 한 번 고려해야될 점을 정리하는 것이 좋겠다고 생각해서 이 글을 작성한다.

채팅은 소켓통신을 통해 하며, 메세지를 받기 위해서는 소켓이 연결되어 있어야 한다. 우리는 이 연결하는 부분을 각각의 필요한 액티비티에 작성했다. 하지만 액티비티에 구현하면 한 가지 문제점이 있었다. 액티비티의 생성과 함께 소켓 통신이 연결되면은 반대로 그 액티비티를 나가서 액티비티가 소멸하면 연결이 끊긴다는 것이다. 처음에 어플을 만들 때는 그냥 채팅을 하는 화면에서만 소켓 통신이 유지되면 되지 않는건가 하는 생각을 했었는데 실상은 달랐다.

우리가 주로 쓰는 메신저 어플인 카카오톡이 소켓 통신으로 이루어진다고 가정해보자.(실제로 그런지는 모른다.) 만약 위에처럼 채팅방에서만 소켓 통신을 유지하게 되면 어떤 일이 생길까? 물론 채팅방에서는 별 문제가 없다. 하지만 채팅방을 나가고 소켓 통신이 끊어지면 더이상 메세지를 받지 못하는 상태가 된다. 즉, 만약 우리가 채팅방에 없을 때는 메세지를 못 받는다. 카카오톡으로 치자면 채팅방에 없는 동안 무슨 메세지가 왔는지 모르게 된다는 것이다.

우선은 이 소켓통신을 항시 유지하는 것이 가장 큰 이슈이다. 다행이게도, Service 클래스를 이용해서 소켓통신을 백그라운드 쪽으로 빼면 항시 유지할 수는 있겠지만, 소켓 통신의 구현체가 액티비티와 서로 통신을 하기 위한 방법을 찾아내야 한다. 일단 얼마 안 남은 프로젝트 기간의 가장 큰 이슈는 소켓 통신을 항상 유지하는 방법을 찾는 것이다.

다음으로는 채팅내용의 보존이다. 채팅방을 나갔다 들어와도 그 전 채팅의 기록이 남아있어야 하는데 이를 어떻게 구현할지이다. 알아본 바로는 어플 내부 데이터베이스와 서버 측 데이터베이스 모두에 저장하는 것같다. 하지만 서버는 서버측 담당자분이 알아서 하실(?) 거라고 생각하고 일단 소켓 통신을 항상 유지하는 이슈가 끝나면 어플 내부 데이터베이스도 설계해야 겠다.

진도 나가기에 바빠서 블로그에 글을 쓰지 한참 되었다. 아마?

오늘은 구조체와 공용체를 다루기 바로 직전에 배우는 포인터와 함수 그리고 void형 포인터에 대해 아주 간략하게 정리해보려 한다. 

1. 함수의 호출은 값에 의한 호출과 주소에 의한 호출로 나뉜다. 값에 의한 호출은 변수값을 복사해서 이용하기 때문에 변경하지 못하지만 주소를 이용한 간접접근 방식은 값을 변경 가능하다는 점이 핵심이다. 값을 변경 가능 하다는 점 말고 실행하는데 필요한 시간과 메모리 공간을 줄일 수 있다는 점에서 포인터에 의한 호출이 필요하다. 이때 1차원 배열은 포인터 변수로 접근하며 2차원 배열은 배열 포인터로 접근한다. 

2. 이전 단원 까지의 함수의 반환 형태는 대부분 값이었다. 만약 배열이나 문자열을 반환해야 할 때에는 값을 반환하는 방식은 적절치 않다. 예상하겠지만 주소를 반환하게 된다. 이때 지역 변수의 주소를 반환하면 경고가 발생한다는 점을 유의해서 static, 즉 정적 변수를 잘 활용하여야 한다.

3. 비슷하게 이전 단원 까지는 main 함수의 인자가 없는 경우만 다뤘는데 인자가 있을 때의 양상을 살펴보자. 중요한 인자 2가지를 살펴보자. int argc는 문자열의 수를 저장하는 변수이며 char* argv는 문자열의 첫번째 주소를 char 형으로 저장한다. 

4. void형 포인터는 다양한 자료형의 주소를 저장 할 수 있는 대신 주소만 저장 가능하다는 한계가 있다. 값을 참조하려면 강제 형변환을 해야 한다. 

//전과 자소서 제출 마감기간 1월 15일까지 내가 c언어 1회독을 과연 할 수 있을까?

 

 

'프로그래밍 언어 > c' 카테고리의 다른 글

C언어 구조체, 공용체, 열거형 (1)  (0) 2021.01.12
구조체와 공용체  (0) 2021.01.10
c언어 (1) - 포인터  (0) 2021.01.05
C언어 파일 입출력 (2)  (0) 2021.01.03
C언어 파일 입출력 (1)  (0) 2021.01.03

+ Recent posts