강의

멘토링

로드맵

BEST
Programming

/

Programming Language

マルチパラダイムプログラミング第1編:イテレータパターン & LISP (with TypeScript, Clojure, Kotlin)

中上級開発者として成長するための高度なプログラミング言語活用能力と、関数型、オブジェクト指向、LISPパラダイムを組み合わせたソフトウェアの設計および実装能力を養います。

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

学習した受講者のレビュー

こんなことが学べます

  • 高級プログラミング言語活用

  • 型システム

  • 関数型プログラミング

  • オブジェクト指向プログラミング

  • リスト処理

  • マルチパラダイムプログラミング

オートバンドバナー(63)

22年目のソフトウェアエンジニア、
県マープルコーポレーションCTO、
元カカオ、NCソフト開発者の
TSKotlinプログラミングパラダイム講義


オブジェクト指向、関数型、命令型パラダイム
すべてをサポートする
現代のプログラミング言語
効果的に活用する方法
は何ですか?


プログラミング言語は、過去に主に関数型、オブジェクト指向、手続き型言語に分かれてきました。しかし、今日では、この傾向が変わりました。関数型とオブジェクト指向の両方の機能を持つハイブリッドプログラミング言語が登場し始め、Java、C#、Scala、 TypeScript 、JavaScript、 Kotlin 、Swiftなど、ほとんどの主要なプログラミング言語がマルチパラダイム言語になりました。この変化は、現業で広く使用されている言語の共通の特徴となりました。

これらの言語は、クラス、継承、インタフェースなどのオブジェクト指向機能だけでなく、一級関数、リスト処理、遅延評価、非同期/並行処理などの関数型プログラミング機能も幅広くサポートしています。また、堅牢で柔軟なタイプシステム、タイプ推論、ジェネリック、ユーティリティタイプなどを提供し、さらには静的タイプと動的タイプを混合することも可能です。


もしそうなら、ほとんど
現代のプログラミング言語
なぜマルチパラダイム言語になったのですか?


いくつかの問題は関数型で解決することが優勢な場合があり、ある問題はオブジェクト指向プログラミングで解決することがより優勢な場合があります。プログラマは、もはや関数型が良いのか、オブジェクト指向が良いのか、静的型が良いのか、動的型が良いのかを議論する必要はありません。言語を作成し、標準を定義する団体と企業は、1つの言語が複数のパラダイムをサポートするように発展させ、おかげで私たちは1つのプロジェクト、ひとつの関数内でも様々なパラダイムを組み合わせてプログラミングできるようになりました。

もう一度基本、
しっかりした基本基盤は明らか
優れた応用力を導きます。


今、私たちはたぶん、特定のライブラリやフレームワークに依存し、それに合った限定的なパラダイムに従い、言語レベルのさまざまな機能とパラダイムを十分に活用できないかもしれません。関数型プログラミング言語やオブジェクト指向プログラミング言語に適用されてきた多くの技術は、非常に深い歴史と本格性を持ち、すでにさまざまな問題を解決して検証されています。言語レベルのさまざまなスキルを持つプログラマーは、より多くの問題を迅速かつ安全かつ柔軟に解決できます。また、特定のライブラリに縛られることなく、より基本的な方法でコードを書くことができます。


パラダイムは特定の言語に限定されない概念であり、
マルチパラダイムプログラミングは
現代のプログラミング言語全体で広く普及しています。


このレッスンシリーズでは、 TypeScript( TypeScript )とCotlin( Kotlin )を主要言語として使用していますが、 Java、C#、Scala、Swiftなどの他の言語でも適用できる技術と概念について説明します。既存の環境と言語を維持しながら、関数型プログラミングを実務に適用するのに役立ちます。また、オブジェクト指向プログラミングと関数型プログラミングを混ぜて問題を解決するコードを提示することで、マルチパラダイム言語を効果的に扱う技術力と応用力を高めて問題解決能力を拡張できるようにします。

中高級開発者として成長するために
より本格的な技術とプログラミング言語
パラダイムの深い探求が不可欠です。


そしてこの旅は本当に面白くて楽しいです。この講義を通じてマルチパラダイム言語の多様な可能性を実感し、高度なプログラミング言語活用能力はもちろん、関数型、オブジェクト指向、LISPパラダイムが結合されたソフトウェア設計および実装能力を養い、何よりコンピュータプログラミングとソフトウェア工学の楽しさを一層深く享受できるきっかけになれば幸いです。


この講義を通じて、 TypeScript開発者はKotlin、
Kotlin開発者はTypeScriptを
マルチパラダイムプログラミングと呼ばれる
同じ視点で一緒に学習できます。


マルチパラダイムプログラミング』講義シリーズ🔎🧑‍💻🚀

マルチパラダイムプログラミング図書に基づいて、幅広く深い講義を提供します。


1: TS - イテレータパターン & LISt Processing (with TypeScript, Kotlin, Clojure)

「このレッスンでは、オブジェクト指向と関数型プログラミングの交差点であるイテレータを中心に、マルチパラダイムイテレーションとリストプロセッシング全般を扱います。

  • イテレータ、ジェネレータ、イテレーションプロトコル、リスト処理

  • 関数型、型システム、クラス、ジェネリックプログラミングを組み合わせた抽象化

  • コード: オブジェクト: 関数 = Generator: Iterator: LISP = IP: OOP: FP

  • コトリンを試す

  • 関数合成と遅延評価の概念の深化

  • リスト処理による実用データの取り扱い


  • より多くの問題に拡張する


2編TS - 非同期/同時性プログラミング(公開予定)

「このレッスンでは、非同期プログラミングの言語の設計とスキームを調べ、非同期作業の結果を値で扱う方法と、遅延評価とリスト処理を使って非同期/同時性ロジックを作成する方法、非同期プログラミングをタイプにハンドリングする方法を紹介します。」

  • 値で扱う非同期プログラミング

  • 遅延性を扱う同時実行プログラミング

  • タイプシステムと非同期、AsyncIterationプロトコル


  • 非同期エラー処理

3編Kotlin - マルチパラダイムイテレーション(公開予定)

「このレッスンでは、Kotlinが提供するイテラブル(Iterable)、イテレータ(Iterator)、シーケンス(Sequence)を学習し、これを通じてKotlin特有の洗練された組み合わせ性と拡張性を見て、リスト処理全体を扱います。 」

  • イテラブル(Iterable)とイテレータ(

    イテレーター)

  • コトリンの洗練された組み合わせ性と拡張性

  • シーケンス(Sequence)

  • リスト処理と遅延評価

  • コトリン拡張関数

  • リスト処理による実用データの取り扱い

  • より多くの問題に拡張する

4編TS - バックエンド/実務中心マルチパラダイムコードとパターン(公開予定)

「バックエンドプログラミングの実践に必要なコードを中心に、MSA環境で分離されたサービス間のデータ同期を合わせるためのスケジューラをリスト処理ベースで実装し、並列性や要求サイズ制限などのバックエンド必須技術もリスト処理の観点から取り上げます。プロセッシング(関数型)を導入するのか、どのような問題に命令型方式を選ぶのかという基準を立てる例もまとめています。

  • カレンダーを描く


  • リスト処理のパターン化

  • バックエンド非同期プログラミング:MSAを処理するリスト処理

  • ハッシュベースの最適化、要求サイズの制限、並列性を活用した効率の向上


  • ネストされたデータと再帰的ロジックを解決するマルチパラダイム手法

  • オブジェクト指向、命令型、関数型を組み合わせた並行処理の拡張

5編: Kotlin - マルチパラダイムイテレーション実戦編(公開予定)

「Coroutine、Flowなど、Deferred、Channelなど、さまざまな並行性メカニズムを学習し、マルチパラダイム同時処理の手法を深く見ていきます。また、本番バックエンドの非同期プログラミングシナリオを通じて、これらの機能を効率的に適用する方法を紹介します。」

  • コルーチン、フロー

  • Deferred, Channel


  • マルチパラダイム同時処理

  • 本番バックエンド非同期プログラミング


第6編TS - マルチパラダイムフロントエンドプログラミング(公開予定)

「Web API(バニラ)ベースのフロントエンド開発を扱い、オブジェクト指向ベースのコンポーネント設計とマルチパラダイム実装の手法を見てみましょう。クラス、インタフェース、継承、抽象、イベント、状態管理から、Headless UI、ジェネリッククラス、戦略パターン、状態パターン、デコレータなどを幅広く学習します。」

  • Web API(バニラ)ベースのフロントエンド開発


  • オブジェクト指向ベースのコンポーネント設計とマルチパラダイムの実装

  • クラス、インタフェース、継承、抽象、イベント、状態管理

  • ヘッドレスUI、ジェネリッククラス、戦略パターン、ステータスパターン、デコレータ

  • ヒューリスティックDiffアルゴリズムとUIレンダリングの最適化

  • 非同期UIハンドリング、コンポーネント間通信設計

7編マルチパラダイムバイブコーディング(公開予定)

講義の特徴と追加資料🚀


👨‍🏫さまざまな言語と技術経験に基づいたカリキュラム

  • インストラクターは、TypeScript、Objective-C、iOS、Java、Android、Node.js、PostgreSQL、Clojure、Kotlin、Ruby on Rails、Web APIs、Canvasなど多様な言語・技術経験に基づいて、オブジェクト指向・関数型・コマンド型パラダイムを効果的に組み合わせる方法を提示します。

  • また、堅牢なタイプシステムやジェネリックからクラス・インタフェース・デザインパターンに至るまで、これらの基盤と設計、そして実戦型コード実装過程を深く取り上げます。

🏢ネクソン・ネイバー・カカオなど主要IT企業技術教育

  • ネクソン、ネイバー、カカオ、LGU+、SKプラネットなど、主要なIT企業を対象に進んだ様々な技術教育のすべての内容を集約しました。


🛠サンプルコードと設定

  • サンプルコードと環境のインストール方法は、マルチパラダイムプログラミングとタイプスクリプトの公式GitHubリンク)で確認できます。

🌐オンラインコミュニティとYouTubeチャンネル

🧡 収益の寄付🏥 👶 🧒

  • 本講義の収益の15%と本の著者収益の全額は、ソウル牙山病院児童病院に寄付されます。

📖マルチパラダイムプログラミング:

オブジェクト指向、関数型、命令型を組み合わせた
ソフトウェアの設計と実装

  • 本書では、追加の理論的内容と見解を盛り込んで、本講義の内容をさらに裏付けています。本書と一緒に勉強すれば、より深い学習と探求が可能です。

  • この書籍には、Haskell、Clojureなどの他の言語に関する教育資料もあります。


  • おすすめの投稿を見る

    1-3章プレビュー

  • 本を見る - 教文庫、 yes24 アラジン


📖コートリンマルチパラダイムのイテレーション:

マルチパラダイムプログラミング付録無料公開

  • マルチパラダイムプログラミングは、特定の言語に限定されない言語に依存しない概念であり、現代のほとんどのプログラミング言語に適用できる方法論および技術です。

  • 『コトリンマルチパラダイムイテレーション』は『マルチパラダイムプログラミング』の付録で、本書の一部内容をコトリン言語に特化して解き出した資料です。

  • 無料の公開資料を見る


多くのシニア開発者がこの講義をお勧めします( 抜粋🌟

「このレッスンは、遅延評価、ジェネレータ、イテラブルなどの現代的な手法を通じて、非同期プログラミングをさらにシンプルで直感的に扱うように案内し、バックエンド並列処理やエラー処理などの複雑な部分もリスト処理手法で優雅に解決できるという事実を悟らせてくれます」

「オブジェクト指向と関数型プログラミングのマルチパラダイム的融合を自然に身につけることができ、単にコードが「動作」することを超えてコードの本質と設計を深く理解し、実戦型パターンを柔軟に適用できる洞察力を得ることになります。」

「中級開発者から高級開発者に成長したい方なら、関数型の純度と不変性からオブジェクト指向のカプセル化と責任分担まで幅広く活用し、さらに拡張された視野で多様なプロジェクトに能動的に対応できるはずです」

「遅延評価でデータフローを最適化し、ジェネレータ・イタラブルを活用して並列処理やエラー処理などの難しい問題を直感的に解決する過程をたどってみると、「どうすればより少ないコードでより多くの価値を作れるか」という究極の質問に対する答えを探すことになります。」

「この講義は「コードの本質」を見つめる目を育ててくれ、単純な文法知識よりも実務志向的なマルチパラダイム設計とパターン適用ノウハウを体得し、様々な状況で最適な解法を提示できるプログラマーとして生まれ変わる機会をプレゼントします。」

こんな方に
おすすめです

学習対象は
誰でしょう?

  • 確かな基礎力を身につけたい開発者

  • 中級開発者

  • フロントエンド開発者

  • TypeScript を使用するバックエンドエンジニア

  • マルチパラダイム言語の基礎と活用を学びたい Kotlin/Java/Swift 開発者

前提知識、
必要でしょうか?

  • 現代プログラミング言語基本文法

  • TypeScript 基本文法

こんにちは
です。

22,619

受講生

786

受講レビュー

457

回答

4.9

講座評価

5

講座

カリキュラム

全体

48件 ∙ (5時間 15分)

講座掲載日: 
最終更新日: 

受講レビュー

全体

28件

5.0

28件の受講レビュー

  • jihoson94님의 프로필 이미지
    jihoson94

    受講レビュー 16

    平均評価 5.0

    5

    100% 受講後に作成

    It's been a long time since I've had an experience where I could grow as a software person who programs, rather than just learning simple skills. While learning, I was amazed by Indong's insights every moment, and I was able to confirm that there were many other options besides the programming-related decisions I had made myself. I was able to grasp the fundamental design intentions of the technologies I had taken for granted, and to have more options, I need to develop the ability to mix various paradigms well and utilize them appropriately. I think that growth is just beginning. This course seems like a good start to that. I hope that other fellow developers will also be able to fully sympathize with and enjoy multi-paradigm programming through this course.

    • mduniv
      知識共有者

      "Growth as a person who deals with software itself" is a really wonderful expression and perspective. I'm glad it seems like the message I wanted to convey through the lecture will be delivered. I hope Jiho will be filled with wonderful and enjoyable things in the field of software engineering in the future!

  • lignerdev1129님의 프로필 이미지
    lignerdev1129

    受講レビュー 3

    平均評価 4.3

    5

    98% 受講後に作成

    A lecture where you can learn the 'multi' paradigm. I've worked with many languages and frameworks over the years, but it's been a long time since I've experienced programming that focuses on the paradigm itself as much as this lecture. It reminds me of when I was learning functional programming a few years ago. The way it explains object-oriented/functional/imperative programming was very impressive. I was able to think structurally about the iterator pattern, and it was a valuable time because I was able to learn practical ways to use it. I was able to experience how programming languages expand thinking, rather than just learning the language itself. I highly recommend this to anyone who wants to make a new turning point in their current coding style.

    • mduniv
      知識共有者

      It's really admirable how modern languages have evolved to handle repetition and various traversal strategies by encapsulating them as values (objects) called iterators, allowing for a shift between different paradigms within a single loop. Thank you. :)

  • junni34님의 프로필 이미지
    junni34

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    As a developer with 9 years of experience, I've used various programming paradigms such as object-oriented, functional, and procedural, but I felt like I wasn't fully utilizing the differences or applications of each paradigm. After being deeply impressed by Indong's presentation at a developer conference for the first time, I encountered more content through Inflearn's functional programming course and YouTube. The newly released multi-paradigm course wasn't just about a specific development style or method; it changed my perspective on paradigms themselves. In particular, I was able to understand concepts such as lazy evaluation, iterable, iterator, and generator more deeply, not just in theory but also from a practical application perspective. It became an opportunity to think concretely about how these concepts can be applied in practice. I was stuck in a familiar pattern of development every day, but this course made me think about looking at code from a new perspective. Now, I want to share multi-paradigm programming with my team members and discuss how we can apply and improve it in our actual work code. 🔥 Hearing the course is planned to continue from Part 1 to Part 7, I'm really looking forward to the advanced content and application examples that will come out in the future. 👍

    • mduniv
      知識共有者

      Thank you for taking the course. It's wonderful that you're thinking about applying it with your team members. I'm sure it will be helpful :) I'll do my best to help with good content! Let's work together!

  • gilsuk님의 프로필 이미지
    gilsuk

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    This lecture focuses on the Iteration Protocol. We will explore the principles of operation by implementing the protocol in various ways, moving between imperative, object-oriented, and functional paradigms. Additionally, we will explore how different languages define and utilize iteration in their own ways, providing diverse perspectives and insights. Through this learning, you will understand that the iteration protocol is a common convention, unconstrained by specific languages or paradigms. Thanks to this characteristic, multi-paradigm programming, which blends different paradigms harmoniously, becomes possible. In addition to its multi-paradigm nature, the iteration protocol offers functional advantages such as improved computational and memory efficiency, and convenient type inference through lambda expressions, making it an inherently attractive concept. If your primary language supports generics, you can apply it anywhere, making it highly versatile and worth learning. We believe that both those familiar with OOP and those who have worked with FP will undoubtedly gain a new perspective by exploring the characteristics of iteration as explained in this lecture.

    • mduniv
      知識共有者

      Thank you for the detailed review! It seems you've studied the lecture very thoroughly. As you mentioned, it's a concept that can be applied to most modern languages! I hope you have a pleasant programming journey! Thank you :)

  • jhlee4997님의 프로필 이미지
    jhlee4997

    受講レビュー 5

    平均評価 4.8

    修正済み

    5

    100% 受講後に作成

    It was a master's lecture that combined various elements and melted them into their own unique language. I had understood this content in a more mathematical language, like Iterable Functor -> Fx Monad, but I appreciated it being explained in a more practical form. Furthermore, the author's explanation of list processing has a mathematical framework for understanding it using adjoint functors, and it was excellent that they emphasized the potential confusion between code (meaning) < - > data (no meaning). However, personally, I found it difficult to consider it multi-paradigm, as almost all explanations seemed to be based on the functional paradigm. I am challenged by the instructor's ability to skillfully combine practice and theory. Thank you. Completed the course! Liked it!

    • mduniv
      知識共有者

      Thank you very much for taking the course and for the wonderful review. :) After covering iterators, one of multi-paradigm intersections, in Part 1, the multi-paradigm content advances in Chapters 4, 5, 6, and 7 of the book, which include new material absent from Part 1. We kindly ask for your continued interest :)

¥6,646

mdunivの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!