Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecpp
themeEmacs
#include <iostream>

struct Node{

    Node* prev;
    Node* next;

    void* data;
};

struct List{
    Node* head;
};

List* createList(){

    Node* head = new Node;
    head->prev = head;
    head->next = head;
    head->data = 0;

    List* list = new List;
    list->head = head;

    return list;
}

void insertNodeAfter(Node* node, void* data){
    
    Node* before = node;
    Node* after = node->next;

    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = after;
    newNode->prev = before;

    after->prev = newNode;
    before->next = newNode;
}

void removeNode(Node* node, bool deleteData){

    Node* before = node->prev;
    Node* after = node->next;

    before->next = after;
    after->prev = before;

    if (deleteData)
        delete node->data;
    delete node;
}
............................................
// 이하생략 이만큼의 코드로도 리스트가 제대로 작동하지않는다.
// 또한 스레드 세이프하기위해서 더 신경쓰야할 부분도있다.


그리고 몇년이 흘러 stl이 등장하고 - ,이러한것을 작성할 필요없는(자료구죠) stl이 등장하였고-  stlport라는 c++비공식 라이브러리였으며 표준에 채택되기 까지는 더 많은 시간이 필요했음

자주 사용되는 자료구조를 구현이아닌 이용을 할수 있는  신기방기한 녀석이 등장하였다. 우수한 개발자들의 역량이 자료구조 설계에 있었기때문에

Stl을 반기지 안했으며 쓸데없는 stl과 비교하는 성능 벤치마크까지 하였으나하는것이 유행이였으나

이 녀석의 등장으로 곧 템플릿+제네릭 프로그램이 유행을하였으며 프라이빗한 자료구조는 몽땅 대체되기 시작하였다.

자료구조를 아주 잘 작성하는 개발자의 시대가 끝났다란것을 의미하기도 한다. 물론 이러한 개발자가 도메인개발까지 잘할수 있다란것은 별개의 문제이다.

Code Block
languagecpp
#include <algorithm>
#include <iostream>
#include <list>
 
int main()
{
    // Create a list containing integers
    std::list<int> l = { 7, 5, 16, 8 };
 
    // Add an integer to the front of the list
    l.push_front(25);
    // Add an integer to the back of the list
    l.push_back(13);
 
    // Insert an integer before 16 by searching
    auto it = std::find(l.begin(), l.end(), 16);
    if (it != l.end()) {
        l.insert(it, 42);
    }
 
    // Iterate and print values of the list
    for (int n : l) {
        std::cout << n << '\n';
    }
}

...

람다,함수형은 그 과정속에서 이용할수 있는 하나의 개발방식이고 전통적인 OOP를 배제하는것이 모던한 개발의 정의는 아닐듯 싶다. 


이와 관련하여, 최근 개발패턴은, 언어나 언어의 디자인 패턴중심이 아닌 마이크로서비스론이 대세가 되고 있으며

다음 주제에 대해 지속적인 연구 활동을 하고 있다.시작하였으며, 이 둘은 따로 국밥이여서 상호베타적인것이 아닌

함께 균형을 맞추면서 알아가야 하는 주제입니다.


Next :