나는 몇 개월전 까지 C언어에 익숙했다. 


대학때도 주로 C를 사용했고, 취업한 후에도 근 3년간 C언어를 사용했다.


이제는 알고리즘 문제를 풀때를 제외하고는 거의 사용하지 않아 정리를 해보려 한다.


그래서,


다루고 싶은 주제만, 경험에 맞추어 쓰려고 한다.


사실 아주 자세한 내용은 널리고 널렸다. 여기서까지 굳이 그런 내용을 써야할까 싶다.


그냥 떠오르는데로, 주로 사용했거나 강조하고 싶었던 내용들을 정리하고싶다.


누군가가 포스팅을 보고 문제를 해결하거나 이해하는데 도움이 된다면 그걸로 족하다.


나중에 다루고 싶은 주제가 나타나거나 누군가의 질문인데 중요한 것이라면 추가로 기술할 생각이다.


들어가면서 하고 싶은 이야기가 있다.


우리는 왜 컴퓨터 언어를 배우는가?


당연한 이야기지만 컴퓨터에게 무언가 시키기 위해 배운다.


(가장 좋은 방법은 컴퓨터가 사람이 하는 말을 알아먹는 것 아닐까?)


이런 면에서 컴퓨터 언어는 마치 번역기와도 같다고 볼 수 있을 것같다. 


컴퓨터가 알아먹는 0101010.. 을 입력하지 않고 사람이 알아볼 수 있는 표현을 기술하면 대충 알아먹으니 말이다.


C 언어 역시 직관적인 표현이 존재한다.


가정 - if 문

반복 - for, while

숫자 - int, double, float

문자 - char

...


이런 것들을 조합해서 프로그램을 만들 수 있다. 


갑자기 이런 이야기를 꺼낸 이유는 C언어(를 비롯한 다양한 고차원 언어)가 


어느정도 자연어와 직관적으로 연관되어 있다는걸 강조하고 싶어서다.


그냥 사용법만 바로 알아서 사용하는 것보다 한 번 짚고 넘어가는게 아무래도 이해하는데 좋지않아서랄까..


(아님 말고)


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

1. 입력과 출력  (0) 2013.08.04
Posted by DevMoon
,

method에서 map을 생성하자니 비효율적인 구조라는 의견이 있고


class로 빼자니, 다른 method에서 조작을 방지했으면 좋겠다는 의견이 있어 생각하다가 발견했다.


(어떤 정신나간 개발자가 method에서 이상한 값을 put 하는 그런 상황)


// class 변수
private final Map<string,string> MyMap;
...
// 생성자에서
HashMap<string,string> map = new HashMap<string,string>();
map.put("K", "1000");
map.put("M", "1000000");
MyMap = Collections.unmodifiableMap(map);


이와 같이 해주면 MyMap에 put 연산할 경우 예외가 발생하게 된다. (java.lang.UnSupportedOperation )


컴파일 시에 에러를 내주면 좋으련만..


이렇게 해도 경각심은 줄 수 있을 것같다.


참고 한 곳(링크) : How to create read only List, Map and Set in Java – unmodifiable example


생각중

'프로그래밍 > JAVA' 카테고리의 다른 글

about test layer  (0) 2014.03.15
java goto문  (1) 2013.08.05
Posted by DevMoon
,

table 이름이 table_1, table_2 .. 이런식으로 되어있을 때 table 번호를 바꿔가면서 데이터 수를 얻어오는 프로시저.


일일이 select 하기 번거로워서 찾아보다가 결국 답을 얻었다. :D


DELIMITER $$
CREATE PROCEDURE documentCount (
  IN p_start INT,
  IN p_end INT,
  IN id INT
)
BEGIN
  DECLARE table_iterator INT;
  DECLARE p_counter INT;
  
  SET p_counter = 0;
  SET table_iterator = p_start;

  WHILE table_iterator <= p_end DO
    SET @stm1 = CONCAT('SELECT count(*) INTO @tmp_counter FROM table_', table_iterator);
    SET @stm2 = CONCAT(' WHERE id=', id);
    SET @query = CONCAT(@stm1, @stm2);

    PREPARE get_count FROM @query;

    EXECUTE get_count;
    SET p_counter=p_counter+@tmp_counter;

    DROP PREPARE get_count;

    SET table_iterator = table_iterator + 1;
  END WHILE;
  SELECT p_counter;
END;
$$
DELIMITER ; 

참고한 사이트


http://www.sql.ru/forum/actualthread.aspx?tid=684898

Posted by DevMoon
,