"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 추상화: 프로그래밍 방식으로 사고하는 방식

추상화: 프로그래밍 방식으로 사고하는 방식

2024-11-08에 게시됨
검색:494

Abstractions: A Way of Thinking Programmatically

"왜 프로그래머는 침대에서 일어나기를 거부했습니까? 그들은 너무 많은 추상화 계층에 갇혀 있었습니다!"

프로그래밍에서도 인생과 마찬가지로 복잡한 일을 단순화하여 관리하기 쉽게 만들어야 하는 경우가 많습니다. 컴퓨터를 본 적이 없는 사람에게 인터넷을 설명한다고 상상해 보세요. 서버와 프로토콜에 대해 이야기하는 것부터 시작하지 않을 것입니다. 대신 아이디어를 전달하기 위해 비유, 이야기 또는 단순화된 버전을 사용합니다. 이것이 프로그래밍에서 추상화의 전부입니다. 즉, 복잡한 것을 단순화하는 것입니다.

추상화: 단순성을 위한 레시피
프로그래밍을 요리처럼 생각해보세요. 레시피를 따르면 오븐에서 일어나는 화학 반응에 대해 생각하지 않습니다. 단계를 따르면 맛있는 요리를 만들 수 있습니다. 프로그래밍의 추상화도 비슷합니다. 내부의 복잡한 세부 사항에 대해 걱정하지 않고 달성하려는 목표에 집중할 수 있습니다.

추상화란 무엇입니까?
추상화는 프로그래밍의 복잡성을 관리하는 방법입니다. 여기에는 복잡한 시스템의 단순화된 모델을 생성하는 작업이 포함되므로 복잡한 세부 사항보다는 상위 수준의 작업에 집중할 수 있습니다. 코드의 특정 부분을 추상화하면 작업 효율성을 높이고 코드를 재사용하며 오류 가능성을 줄일 수 있습니다.

샌드위치 비유: 추상화 계층 구축
샌드위치 비유를 사용하여 실제 사례를 살펴보겠습니다.
1. 재료(낮은 수준 세부 정보) 가장 기본적인 수준에는 빵, 양상추, 토마토, 치즈, 칠면조 등의 재료가 있습니다. 이는 프로그래밍의 원시 데이터 또는 하위 수준 작업과 같습니다. 꼭 필요한 사항이지만 직접 처리하는 것은 번거로울 수 있습니다.

예:

let bread = "whole grain";
let lettuce = "romaine";
let tomato = "sliced";
let cheese = "cheddar";
let turkey = "smoked";

2. 샌드위치(고차원 추상화) 각 재료를 개별적으로 처리하는 대신 샌드위치를 ​​만듭니다. 이는 구성 요소를 보다 관리하기 쉬운 단일 개체로 묶는 추상화입니다.

예:

function makeSandwich(bread, lettuce, tomato, cheese, turkey) {
    return `${bread} sandwich with ${lettuce}, ${tomato}, ${cheese}, and ${turkey}`;
}
let myLunch = makeSandwich("whole grain", "romaine", "sliced", "cheddar", "smoked");

makeSandwich 함수로 세부 정보를 추상화하면 점심을 만들 때마다 개별 재료에 대해 걱정할 필요가 없습니다. 함수를 호출하기만 하면 됩니다.

3. 점심 주문(더 높은 추상화) 이제 델리에서 점심을 주문하고 싶다면 어떻게 해야 할까요? 샌드위치를 ​​만드는 과정에 대해 생각할 필요조차 없습니다. 간단히 주문하면 됩니다. 이는 더욱 단순화된 인터페이스와 상호 작용하는 더 높은 수준의 추상화입니다.

예:

function orderLunch(type) {
    if (type === "sandwich") {
        return makeSandwich("whole grain", "romaine", "sliced", "cheddar", "smoked");
    }
    // Other lunch options could go here
}
let myOrder = orderLunch("sandwich");

실용적인 사용 사례 시나리오: 사용자 인터페이스 구축
사용자 인터페이스(UI)와 같은 복잡한 시스템을 구축할 때 추상화는 매우 중요합니다. 소셜 미디어 앱용 UI를 구축한다고 가정해 보겠습니다. 각 버튼, 텍스트 상자 및 이미지에 대한 코드를 개별적으로 작성하는 대신 이를 나타내는 추상 구성 요소를 만듭니다.

function createButton(label) {
    return ``;
}
function createUserProfile(name, bio) {
    return `
        

${name}

${bio}

${createButton("Follow")}
`; } let profile = createUserProfile("Koobimdi", "Passionate about coding and storytelling.");

여기서 createButton 함수는 버튼 생성을 추상화하고 createUserProfile 함수는 사용자 프로필을 추상화합니다. 매번 원시 HTML 태그를 다루는 것이 아니라 단지 더 높은 수준의 추상화를 다루는 것입니다.

유의해야 할 핵심 사항
추상화는 복잡성을 단순화합니다: 기본 복잡성에 대해 걱정하지 않고 더 높은 수준의 세부 사항으로 작업할 수 있습니다.
추상화 레이어: 더 많은 추상화 레이어를 만들수록 각 수준에서 중요한 것에 더 집중할 수 있습니다.
재사용성: 추상화는 여러 상황에서 사용할 수 있는 일반 기능이나 구성 요소를 생성할 수 있도록 하여 재사용성을 장려합니다.
효율성: 반복적인 작업을 추상화함으로써 보다 효율적이고 유지 관리가 쉬운 코드를 작성할 수 있습니다.

결론
추상화는 요리 과정을 단순화하는 조리법과 같아서 세부 사항에 얽매이지 않고 복잡한 요리를 만들 수 있습니다. 프로그래밍에서는 복잡성을 관리하고, 보다 효율적으로 작업하고, 깔끔한 코드를 작성하는 데 도움이 되는 강력한 도구입니다.

"부엌이 너무 지저분할 때 테이크아웃을 주문하는 것처럼 상황이 너무 복잡해지면 탈출구를 추상화해야 한다는 점을 기억하세요!"

릴리스 선언문 이 글은 https://dev.to/koobimdi/abstractions-a-way-of-thinking-programmatically-3cdc?1 에서 복제되었습니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3