Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
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,530

受講生

779

受講レビュー

457

回答

4.9

講座評価

5

講座

カリキュラム

全体

48件 ∙ (5時間 15分)

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

受講レビュー

全体

28件

5.0

28件の受講レビュー

  • jihoson94님의 프로필 이미지
    jihoson94

    受講レビュー 16

    平均評価 5.0

    5

    100% 受講後に作成

    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
      知識共有者

      "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

    受講レビュー 3

    平均評価 4.3

    5

    98% 受講後に作成

    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
      知識共有者

      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

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    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
      知識共有者

      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

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    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
      知識共有者

      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

    受講レビュー 5

    平均評価 4.8

    修正済み

    5

    100% 受講後に作成

    Đâ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
      知識共有者

      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ị :)

¥6,503

mdunivの他の講座

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

似ている講座

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