강의

멘토링

커뮤니티

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) 30 reviews

344 learners

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

Reviews from Early Learners

What you will gain after the course

  • 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,703

Learners

794

Reviews

457

Answers

4.9

Rating

5

Courses

Curriculum

All

48 lectures ∙ (5hr 15min)

Published: 
Last updated: 

Reviews

All

30 reviews

5.0

30 reviews

  • jihoson94님의 프로필 이미지
    jihoson94

    Reviews 16

    Average Rating 5.0

    5

    100% enrolled

    Thật lâu lắm rồi tôi mới có được trải nghiệm trưởng thành không phải nhờ việc học hỏi các kỹ thuật đơn thuần, mà là sự trưởng thành của chính bản thân người làm phần mềm thông qua việc lập trình. Trong quá trình học, tôi không ngừng thán phục những kiến thức sâu sắc của anh Intong, và nhận ra rằng ngoài những quyết định liên quan đến lập trình mà tôi đã tự đưa ra từ trước đến nay, còn có rất nhiều lựa chọn khác. Tôi có thể nắm bắt được ý định thiết kế cơ bản của những kỹ thuật mà mình đã sử dụng một cách đương nhiên, và để có nhiều lựa chọn hơn, tôi cần phải trau dồi khả năng kết hợp tốt các mô hình khác nhau và sử dụng chúng đúng lúc đúng chỗ. Tôi nghĩ rằng sự trưởng thành đó chỉ mới bắt đầu. Và đây có vẻ là một khóa học tốt để bắt đầu. Tôi hy vọng rằng các đồng nghiệp lập trình viên khác cũng có thể đồng cảm và tận hưởng trọn vẹn việc lập trình đa mô hình thông qua khóa học này.

    • mduniv
      Instructor

      "Sự trưởng thành của chính người làm phần mềm" quả là một cách diễn đạt và góc nhìn tuyệt vời. Rất vui vì câu chuyện tôi muốn truyền tải qua bài giảng có vẻ sẽ được đón nhận. Chúc Jiho cũng sẽ có thật nhiều điều tuyệt vời và thú vị trong lĩnh vực kỹ thuật phần mềm nhé!

  • lignerdev1129님의 프로필 이미지
    lignerdev1129

    Reviews 3

    Average Rating 4.3

    5

    98% enrolled

    Một bài giảng giúp bạn học hỏi các 'đa' mô hình. Tôi đã làm việc với nhiều ngôn ngữ và framework trong nhiều năm, nhưng đây là lần đầu tiên sau một thời gian dài tôi được trải nghiệm một buổi học tập trung vào bản thân mô hình và cách lập trình như buổi giảng này. Nó làm tôi nhớ đến thời gian tôi học lập trình hàm cách đây vài năm. Cách giải thích qua lại giữa hướng đối tượng/hàm/mệnh lệnh rất ấn tượng. Tôi có thể suy luận có cấu trúc về mẫu iterator và học các ứng dụng thực tế cùng một lúc, đó là một thời gian hữu ích. Không phải là học ngôn ngữ, mà là trải nghiệm cách ngôn ngữ lập trình mở rộng tư duy. Tôi thực sự khuyên bạn nên dùng thử nếu bạn muốn có một bước ngoặt mới trong phương pháp viết code hiện tại của mình.

    • mduniv
      Instructor

      Việc gói gọn các thao tác lặp và các chiến lược duyệt khác nhau thành một giá trị (đối tượng) gọi là iterator để xử lý, đồng thời cho phép chuyển đổi giữa nhiều mô hình (paradigm) khác nhau ngay trong một vòng lặp, tôi thấy thiết kế của các ngôn ngữ hiện đại thật tuyệt vời. Cảm ơn bạn. :)

  • junni34님의 프로필 이미지
    junni34

    Reviews 1

    Average Rating 5.0

    5

    100% enrolled

    Là một nhà phát triển với 9 năm kinh nghiệm, tôi đã sử dụng nhiều mô hình lập trình khác nhau như hướng đối tượng, hàm, thủ tục, nhưng tôi cảm thấy mình chưa tận dụng hết sự khác biệt và cách sử dụng của từng mô hình. Lần đầu tiên tôi xem bài thuyết trình của anh Indong tại một hội nghị nhà phát triển và rất ấn tượng. Sau đó, tôi tìm hiểu thêm qua khóa học lập trình hàm trên Inflearn và YouTube. Khóa học đa mô hình mới ra mắt lần này không chỉ đơn thuần là nói về một kiểu hoặc phương pháp phát triển cụ thể. Nó đã thay đổi góc nhìn của tôi về các mô hình lập trình. Đặc biệt, tôi đã hiểu sâu sắc hơn về các khái niệm như đánh giá trễ (lazy evaluation), iterable, iterator, generator không chỉ về mặt lý thuyết mà còn cả về mặt ứng dụng thực tế. Đây là cơ hội để tôi suy nghĩ cụ thể về cách áp dụng những khái niệm này vào công việc thực tế. Hàng ngày, tôi phát triển theo những khuôn mẫu quen thuộc và tư duy bị bó hẹp. Khóa học này đã khiến tôi nghĩ rằng mình nên nhìn nhận code từ một góc độ mới. Giờ đây, tôi muốn chia sẻ về lập trình đa mô hình với các thành viên trong nhóm và thảo luận về cách áp dụng và cải thiện nó trong code công việc thực tế của chúng tôi. 🔥 Khi nghe nói rằng khóa học sẽ kéo dài từ part-1 đến part-7, tôi thực sự mong chờ những nội dung nâng cao và các ví dụ ứng dụng sẽ được giới thiệu trong tương lai. 👍

    • mduniv
      Instructor

      Cảm ơn bạn đã tham gia khóa học. Thật tuyệt vời khi bạn đã nghĩ đến việc áp dụng nó với các thành viên trong nhóm. Tôi tin chắc rằng nó sẽ hữu ích đó :) Tôi cũng sẽ cố gắng hỗ trợ bằng những nội dung tốt! Cùng nhau cố gắng nhé!

  • gilsuk님의 프로필 이미지
    gilsuk

    Reviews 1

    Average Rating 5.0

    5

    100% enrolled

    Bài giảng này tập trung vào Giao thức lặp (Iteration Protocol). Chúng ta sẽ khám phá nguyên tắc hoạt động bằng cách triển khai giao thức theo nhiều cách khác nhau, vượt qua các mô hình mệnh lệnh, hướng đối tượng và hàm, đồng thời cung cấp nhiều quan điểm và hiểu biết sâu sắc thông qua cách các ngôn ngữ khác nhau định nghĩa và sử dụng lặp theo cách riêng của chúng. Thông qua việc học tập, bạn sẽ nhận ra rằng giao thức lặp là một quy ước chung không bị ràng buộc bởi một ngôn ngữ hoặc mô hình cụ thể. Nhờ đặc điểm này, lập trình đa mô hình (multi-paradigm programming), tận dụng nhiều mô hình khác nhau mà vẫn hòa hợp với nhau, trở nên khả thi. Ngoài đặc điểm đa mô hình, giao thức lặp còn có những ưu điểm về mặt chức năng như giúp cải thiện hiệu quả tính toán và bộ nhớ, đồng thời cho phép suy luận kiểu thuận tiện thông qua biểu thức lambda, khiến nó trở thành một khái niệm hấp dẫn. Nếu ngôn ngữ bạn sử dụng hỗ trợ generic, bạn có thể áp dụng nó ở bất cứ đâu, vì vậy tôi nghĩ rằng nó rất đáng để học. Tôi tin rằng ngay cả những người quen thuộc với OOP hoặc những người đã làm việc với FP, khi khám phá các đặc điểm của lặp mà bài giảng giải thích, chắc chắn sẽ có được một góc nhìn mới.

    • mduniv
      Instructor

      Cảm ơn bạn vì bài đánh giá chi tiết! Có vẻ như bạn đã học các bài giảng rất kỹ lưỡng. Đúng như bạn nói, đây là một khái niệm có thể được áp dụng trong hầu hết các ngôn ngữ hiện đại! Chúc bạn có một hành trình lập trình thú vị! Cảm ơn bạn :)

  • jhlee4997님의 프로필 이미지
    jhlee4997

    Reviews 5

    Average Rating 4.8

    Edited

    5

    100% enrolled

    Đây là một bài giảng của một bậc thầy, người đã kết hợp nhiều yếu tố và trình bày chúng bằng ngôn ngữ riêng của mình. Tôi đã hiểu nội dung này dưới góc độ toán học hơn là Iterable Functor -> Fx Monad, nhưng tôi thấy rất hay khi nó được giải thích dưới dạng thực tế hơn. Và điều tác giả nhấn mạnh về việc có thể nhầm lẫn giữa Code (ý nghĩa) < - > Dữ liệu (không có ý nghĩa), trong khi list processing mà tác giả giải thích có một khuôn khổ toán học để hiểu bằng cách sử dụng adjoint functor, cũng thực sự rất tốt. Tuy nhiên, cá nhân tôi thấy rằng hầu hết các giải thích đều dựa trên mô hình hàm số (functional paradigm), nên hơi khó để coi đây là mô hình đa chiều (multi-paradigm). Tôi thực sự được thử thách bởi năng lực của giảng viên, người đã kết hợp nhuần nhuyễn giữa thực tiễn và lý thuyết. Xin cảm ơn. Đã hoàn thành khóa học! Rất tốt!

    • mduniv
      Instructor

      Xin chân thành cảm ơn quý vị đã tham gia khóa học và những đánh giá tuyệt vời. :) Trong Phần 1, sau khi thảo luận về bộ lặp – một trong những giao điểm của đa mô hình – nội dung đa mô hình sẽ được nâng cao dần khi đi đến các chương 4, 5, 6, 7 của sách, những phần không có trong Phần 1. Rất mong nhận được nhiều sự quan tâm của quý vị :)

$42.90

mduniv's other courses

Check out other courses by the instructor!

Similar courses

Explore other courses in the same field!