Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
BEST
Programming

/

Programming Language

Multi-paradigm Programming Part 1: Iterator Pattern & LISP (with TypeScript, Clojure, Kotlin)

Cultivate advanced programming language utilization skills and software design and implementation skills combining functional, object-oriented, and LISP paradigms, necessary for growing into a mid-to-senior level developer.

(5.0) 28 reviews

326 learners

  • mduniv
시리즈
이론 실습 모두
multi-paradigm Programming
TypeScript
Functional Programming
oop
software-design

Reviews from Early Learners

What you will learn!

  • Advanced Programming Language Utilization

  • Type System

  • Functional Programming

  • Object-Oriented Programming

  • List Processing

  • Multi-paradigm Programming

Haute couture banner (63)

22 years of experience as a software engineer,
Current CTO of Maple Corporation,
Former Kakao and NCsoft developer
TS · Kotlin · Programming Paradigm Lecture


Object-oriented, functional, and imperative paradigms.
All modern programming languages supported
How can we use it effectively ?


Programming languages have been mainly divided into functional, object-oriented, and procedural languages in the past. However, this trend has changed today. Hybrid programming languages with both functional and object-oriented features have begun to appear, and now most major programming languages such as Java, C#, Scala, TypeScript , JavaScript, Kotlin , and Swift have become multi-paradigm languages. This change has become a common characteristic of languages widely used in the field.

These languages provide a wide range of functional programming features , including first-class functions, list processing, lazy evaluation, and asynchronous/concurrent processing, as well as object-oriented features such as classes, inheritance, and interfaces . They also provide robust yet flexible type systems, type inference, generics, utility types , and even allow mixing static and dynamic types .


If so, most of
Modern programming languages
Why did it become a multi-paradigm language?


Some problems are better solved with functional programming, while others are better solved with object-oriented programming. Programmers no longer need to debate whether functional programming is better or object-oriented programming is better or static typing is better or dynamic typing is better. The organizations and companies that create languages and define standards have evolved to support multiple paradigms in a single language, allowing us to program in a single project, or even within a single function, using a combination of different paradigms .

Back to basics,
Solid fundamentals are clear
Leading to excellent applicability.


Now, we may be relying on specific libraries or frameworks and following limited paradigms that fit them, and thus not fully utilizing the various functions and paradigms at the language level. Many of the technologies applied to functional programming languages or object-oriented programming languages have a very deep history and legitimacy, and have already been verified by solving various problems. Programmers with various skills at the language level can solve more problems quickly, safely, and flexibly. It also allows you to write code in a more fundamental way, without being tied to a specific library.


A paradigm is a concept that is not limited to a specific language .
Multi-paradigm programming is
It is widely used across modern programming languages.


This lecture series primarily uses TypeScript and Kotlin as its languages , but covers techniques and concepts that can be applied to other languages such as Java, C#, Scala, and Swift . It helps you apply functional programming to your work while maintaining your existing environment and language. It also helps you expand your problem-solving skills by increasing your skills and application skills to effectively handle multi-paradigm languages by presenting code that solves problems by mixing object-oriented programming and functional programming .

To grow into a mid-level developer,
More orthodox technologies and programming languages ,
A deep exploration of the paradigm is essential.


And this journey is really interesting and fun. Through this lecture, I hope that you will be able to experience the various possibilities of multi-paradigm languages , develop the ability to use high-level programming languages , and develop the ability to design and implement software that combines functional, object-oriented, and LISP paradigms , and above all, enjoy the joy of computer programming and software engineering more deeply.


This course will help TypeScript developers: Kotlin,
Kotlin developers use TypeScript
Multi-paradigm programming
We can learn together from the same perspective.


Multi-paradigm programming 』 lecture series 🔎🧑‍💻🚀

We provide broad and in-depth lectures based on the multi-paradigm programming book.


Part 1: TS - Iterator Pattern & LISt Processing (with TypeScript, Kotlin, Clojure)

“This course covers multi-paradigm iteration and list processing in general, focusing on iterators, which are the intersection of object-oriented and functional programming. The main language used is TypeScript, and Clojure and Kotlin are also briefly reviewed to deeply understand the concepts of list processing and multi-paradigm iteration.”

  • Iterators, generators, iteration protocols, list processing

  • Abstraction combining functional, type system, classes, and generic programming.

  • Code : Object : Function = Generator : Iterator : LISP = IP : OOP : FP

  • Try it with Kotlin

  • Deepening the concepts of function composition and lazy evaluation

  • Handling real-world data with list processing


  • Expand to more problems


Part 2 : TS - Asynchronous/Concurrent Programming (Coming soon)

“This lecture introduces the design and structure of the language for asynchronous programming, how to handle the results of asynchronous operations as values, how to write asynchronous/concurrent logic using lazy evaluation and list processing, and how to handle asynchronous programming as types.”

  • Asynchronous programming by value

  • Concurrent programming with delay

  • Type system and asynchrony, AsyncIteration protocol


  • Asynchronous error handling

Part 3 : Kotlin - Multi-paradigm Iteration (Coming soon)

“In this lecture, we will learn about Iterable, Iterator, and Sequence provided by Kotlin, and through these, we will look at the sophisticated composition and extensibility unique to Kotlin, and cover the entire list processing. Also, based on Iterator and Sequence, we will deeply understand Kotlin’s iteration design, which will help us accurately understand and apply coroutines later.”

  • Iterable and Iterator(

    Iterator)

  • Kotlin's sophisticated composability and extensibility

  • Sequence

  • List processing and lazy evaluation

  • Kotlin extension functions

  • Handling real-world data with list processing

  • Expand to more problems

Part 4 : TS - Backend/Practice-oriented multi-paradigm code and patterns (coming soon)

“Focusing on the code required for backend programming practices, we implement a scheduler based on list processing to synchronize data between separated services in an MSA environment, and also cover essential backend techniques such as parallelism and request size limits from the perspective of list processing. We also look at multi-paradigm design and implementation cases, and cover examples that can establish criteria for which problems to apply classes (object-oriented), which problems to introduce list processing (functional), and which problems to adopt the imperative method.”

  • Draw a calendar


  • List processing pattern

  • Backend Asynchronous Programming: List Processing Handling MSAs

  • Hash-based optimization, request size limits, and parallelism for efficiency


  • Multi-paradigm technique for solving nested data and recursive logic

  • Extended concurrency handling that combines object-oriented, imperative, and functional.

Part 5: Kotlin - Multi-paradigm iteration in practice (coming soon)

“Learn about various concurrency mechanisms such as Coroutine, Flow, Deferred, and Channel, and take an in-depth look at multi-paradigm concurrency handling techniques. We also present how to efficiently apply these functions through real-world backend asynchronous programming scenarios.”

  • Coroutine, Flow

  • Deferred, Channel


  • Multi-paradigm concurrency handling

  • Practical Backend Asynchronous Programming


Part 6 : TS - Multi-Paradigm Front-End Programming (Coming Soon)

“We cover front-end development based on Web API (vanilla), and we look at object-oriented component design and multi-paradigm implementation techniques. We learn a wide range of topics, from classes, interfaces, inheritance, abstraction, events, and state management to headless UI, generic classes, strategy patterns, state patterns, and decorators.”

  • Front-end development based on Web API (Vanilla)


  • Object-oriented component design and multi-paradigm implementation

  • Classes, interfaces, inheritance, abstraction, events, state management

  • Headless UI, generic classes, strategy pattern, state pattern, decorator

  • Heuristic Diff Algorithm and UI Rendering Optimization

  • Asynchronous UI handling, inter-component communication design

Part 7 : Multi-Paradigm Vibe Coding (Coming Soon)

Course Features and Additional Resources 🚀


👨‍🏫 Curriculum based on diverse language and technology experiences

  • The instructor draws on his experience in a variety of languages and technologies, including TypeScript, Objective-C, iOS, Java, Android, Node.js, PostgreSQL, Clojure, Kotlin, Ruby on Rails, Web APIs, and Canvas, to present methods for effectively combining object-oriented, functional, and imperative paradigms.

  • It also covers in depth the foundations, design, and practical code implementation of a robust type system and generics, as well as classes, interfaces, and design patterns.

🏢 Technology training at major IT companies such as Nexon, Naver, and Kakao

  • We have compiled all the contents of various technical trainings conducted for major IT companies such as Nexon, Naver, Kakao, LGU+, and SK Planet.


🛠 Example code and setup

  • Example code and how to install the environment can be found on the official Multi-Paradigm Programming and TypeScript GitHub ( link ).

🌐 Online community and YouTube channel

🧡 Donate your proceeds 🏥 👶 🧒

  • 15% of the proceeds from this lecture and all of the author's proceeds from the book will be donated to Seoul Asan Medical Center Children's Hospital.

📖 Multi-paradigm programming:

Combining object-oriented, functional, and imperative
Software Design and Implementation

  • This book provides additional theoretical content and perspectives to further support the content of this lecture. Studying with this book will allow for deeper learning and exploration.

  • The book also provides instructional material for other languages, including Haskell and Clojure.


  • View recommended articles |

    Preview Chapters 1-3

  • View books - Kyobo Bookstore , yes24 , Aladdin


📖 Kotlin Multi-Paradigm Iteration:

Multi-paradigm programming appendix free public

  • Multiparadigm programming is a language-independent concept that is not limited to a specific language, and is a methodology and technique that can be applied to most modern programming languages.

  • "Kotlin Multi-Paradigm Iteration" is an appendix to "Multi-Paradigm Programming" and is a material that explains some of the contents of this book in a way that is specialized for the Kotlin language.

  • Go to Free Public Data


Many senior developers recommend this course ( excerpt ) 🌟

"This course will teach you how to handle asynchronous programming more simply and intuitively using modern techniques such as lazy evaluation, generators, and iterables. It will also help you realize that complex areas such as backend parallel processing and error handling can be elegantly addressed using list processing techniques."

"You will naturally learn the multi-paradigm fusion of object-oriented and functional programming, so you will gain insight into the nature and design of code beyond simply 'working' code, and be able to flexibly apply practical patterns."

"If you want to grow from an intermediate developer to an advanced developer, you will be able to actively respond to various projects with a broader perspective by making extensive use of functional purity and immutability, as well as object-oriented encapsulation and division of responsibility."

"As you follow the process of optimizing data flow with lazy evaluation and intuitively solving difficult problems like parallel processing and error handling using generators and iterables, you will find the answer to the ultimate question: 'How can I create more value with less code?'"

"This course will help you develop an eye for seeing into the 'essence of code', and will provide you with the opportunity to acquire practical multi-paradigm design and pattern application know-how that goes beyond simple grammar knowledge, and to become a programmer who can present optimal solutions in various situations."

Recommended for
these people

Who is this course right for?

  • A developer who wants to build solid fundamentals

  • Intermediate Developer

  • Frontend Developer

  • Backend developer using TypeScript

  • Kotlin/Java/Swift developer who wants to learn the foundations and usage of multi-paradigm languages

Need to know before starting?

  • Basic Syntax of Modern Programming Languages

  • TypeScript basic syntax

Hello
This is

22,528

Learners

779

Reviews

457

Answers

4.9

Rating

5

Courses

Curriculum

All

48 lectures ∙ (5hr 15min)

Published: 
Last updated: 

Reviews

All

28 reviews

5.0

28 reviews

  • 지호손님의 프로필 이미지
    지호손

    Reviews 16

    Average Rating 5.0

    5

    100% enrolled

    정말 오랜만에 단순 기술을 익혀서 하는 성장이 아닌 프로그래밍을 하는 소프트웨어를 다루는 사람 그 자체로 성장을 할 수 있는 경험을 했습니다. 학습을 진행하면서 매순간 인동님의 인사이트에 감탄하면서 지금까지 스스로 내려왔던 프로그래밍 관련 결정들 이외에 다른 선택지들이 많이 있다는 것을 확인할 수 있었습니다. 당연하게 활용해왔던 기술들의 근본적인 설계 의도를 파악할 수 있고, 더 많은 선택지를 가지려면 여러 패러다임을 잘 섞고 적재적소에 잘 활용할 수 있는 능력을 키워야합니다. 그 성장은 이제 시작이지 않을까 싶습니다. 그러한 시작을 하기에 좋은 강의 같습니다. 다른 동료 개발자들도 이 강의를 통해 멀티패러다임 프로그래밍을 온전히 공감하고 즐길 수 있기를 기원합니다.

    • MDU 유인동
      Instructor

      "소프트웨어를 다루는 사람 그 자체로의 성장" 정말 멋진 표현이고 시각입니다. 강의를 통해 전하고 싶은 이야기가 전달될 것 같아 기쁘네요. 앞으로 지호님께서도 소프트웨어 엔지니어링 분야에서 멋지고 즐거운 일들로 가득하시길 바라겠습니다!

  • devsn님의 프로필 이미지
    devsn

    Reviews 3

    Average Rating 4.3

    5

    98% enrolled

    '멀티' 패러다임을 배울 수 있는 강의. 다년 간 여러 언어와 프레임워크를 다뤄왔지만, 이번 강의만큼 패러다임 자체에 중점을 두고, 프로그래밍을 다뤘던 경험은 정말 오랜만인 거 같네요. 몇년 전 함수형 프로그래밍을 학습하던 때가 떠오르네요. 객체지향/함수형/명령형을 넘나들며 설명하는 방식은 굉장히 인상적이었습니다. 반복자패턴에 대해 구조적 사유를 할 수 있었고, 실질적인 활용법을 함께 배울 수 있어서 유익한 시간이었습니다. 언어 학습이 아니라, 프로그래밍 언어가 어떻게 사고를 확장시키는지를 경험할 수 있었습니다. 현재 내 코딩 방식에 새로운 전환점을 두고 싶은 분들께 강력히 추천드립니다.

    • MDU 유인동
      Instructor

      반복, 그리고 다양한 순회 전략을 이터레이터라는 값(객체)으로 캡슐화해 다루며, 하나의 반복문 안에서도 여러가지 패러다임으로 전환 할 수 있도록 발전되어온 현대 언어의 설계가 참 멋진 것 같습니다. 감사합니다. :)

  • 배고팡님의 프로필 이미지
    배고팡

    Reviews 1

    Average Rating 5.0

    5

    100% enrolled

    9년간의 개발 경험을 가진 개발자로서, 저는 객체 지향, 함수형, 절차적 등 다양한 프로그래밍 패러다임을 사용해왔지만, 각 패러다임의 차이나 사용을 충분히 활용하지 못하고 있다는 느낌을 받았습니다. 처음 개발자 컨퍼런스에서 인동님의 발표를 인상 깊게 보고, 인프런의 함수형 프로그래밍 강의와 유튜브를 통해 더 많은 내용을 접하게 되었고 이번에 새로 출시한 멀티패러다임 강의는 단순히 특정 개발 스타일이나 방식에 대한 이야기가 아니었습니다. 패러다임을 바라보는 관점 자체를 변화시켜 주었습니다. 특히 지연 평가(lazy evaluation), iterable, iterator, generator와 같은 개념들을 이론뿐 아니라 실제 활용 관점에서 더 깊이 있게 이해할 수 있었고, 이러한 개념들을 실무에 어떻게 적용할 수 있을지 구체적으로 고민해보는 계기가 되었습니다. 매일 익숙한 패턴으로 개발하며 사고방식이? 갇혀있었는데, 이 강의는 새로운 관점에서 코드를 바라보자 라고 생각이 들게 되었습니다. 이제는 회사 팀원들과 멀티패러다임 프로그래밍에 대해 공유하고, 우리의 실제 업무 코드에 어떻게 적용 및 개선할 수 있을지 이야기 해보고 싶습니다.🔥 part-1부터 part-7까지 이어진다는 강의 계획을 들으니, 앞으로 나올 심화 내용과 응용 사례들도 정말 기대됩니다. 👍

    • MDU 유인동
      Instructor

      수강해주셔서 감사합니다. 팀원들과 적용까지 생각하신다니 너무 멋지네요. 분명히 도움이 될거라 믿습니다 :) 저도 좋은 컨텐츠로 돕도록 하겠습니다! 함께해요!

  • 길석님의 프로필 이미지
    길석

    Reviews 1

    Average Rating 5.0

    5

    100% enrolled

    본 편 강의는 Iteration Protocol을 중점적으로 다룹니다. 명령형과 객체지향, 함수형 패러다임을 넘나들며 여러 구현 방식으로 프로토콜을 구현하면서 작동 원리를 탐구하고, 다양한 언어들이 나름의 방식으로 이터레이션을 정의하고 활용하는 방법을 통해, 다양한 시각과 통찰을 전달해줍니다. 학습을 통해 이터레이션 프로토콜이 특정 언어나 패러다임에 구애받지않는 공통 규약임을 알 수 있고. 이러한 특징덕에 다양한 패러다임을 활용하면서도 서로 잘 어우러지게 하는 멀티 패러다임 프로그래밍이 가능해집니다. 이터레이션 프로토콜은 멀티 패러다임이라는 특징 외에도, 연산이나 메모리 효율에도 도움을 줄 수 있고, 람다식을 통한 편리한 타입추론도 가능해지는 등, 기능적인 이점도 있기 때문에 자체적으로도 충분히 매력적인 개념입니다. 주로 사용하는 언어가 제네릭을 지원하기만 한다면, 어디든 적용해볼 수 있으니 활용도도 매우높아 학습할 가치가 있다고 생각합니다. OOP에 익숙하신 분들은 물론 FP를 다뤄오셨던 분들이라도 강의가 설명하는 이터레이션의 특징들을 탐구하다보면 분명 새로운 시각을 장착 하시게 될 것이라고 생각합니다.

    • MDU 유인동
      Instructor

      상세한 리뷰 감사합니다! 강의를 정말 상세히 학습해주신 것 같아요. 말씀주신대로 대부분의 현대 언어들에서 모두 적용할 수 있는 개념이죠! 즐거운 프로그래밍 여정이 되시길 바래요! 감사합니다 :)

  • 이준호님의 프로필 이미지
    이준호

    Reviews 5

    Average Rating 4.8

    Edited

    5

    100% enrolled

    여러가지 요소를 결합하여 자신만의 언어로 녹여낸 고수의 강의였습니다. 저는 이 내용을 보다 수학적인 언어인 Iterable Functor -> Fx Monad 이렇게 이해하고 있었는데 보다 실무적인 형태로 풀어낸 것이 좋았습니다. 그리고 저자가 설명하는 list processing은 수학적으로는 adjoint functor를 사용하여 이해하는 틀이 있는데 코드(의미) < - > 데이터 (의미 없음) 을 혼동할 수 있음을 강조한 것도 참 좋습니다. 다만 개인적으로는 거의 모든 설명이 함수형 패러다임 기반인거 같아서 멀티 패러다임이라 보기는 좀 힘들었습니다. 실무와 이론이 잘 조합된 강사의 능력에 도전을 받습니다. 감사합니다. 완강했어요! 좋아요!

    • MDU 유인동
      Instructor

      수강과 멋진 리뷰 정말 감사합니다. :) 1편에서는 멀티패러다임의 교차점 중 하나인 반복자에 대해 다룬 후, 1편에는 없는 내용인 책의 이후 4,5,6,7 장으로 가면서 멀티패러다임적인 내용이 고도화됩니다. 많은 관심 부탁드립니다 :)

$42.90

mduniv's other courses

Check out other courses by the instructor!

Similar courses

Explore other courses in the same field!