Inflearn brand logo image
Inflearn brand logo image
BEST
Programming

/

Programming Language

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

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

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,438

受講生

776

受講レビュー

457

回答

4.9

講座評価

5

講座

カリキュラム

全体

48件 ∙ (5時間 15分)

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

受講レビュー

全体

28件

5.0

28件の受講レビュー

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

    受講レビュー 15

    平均評価 5.0

    5

    100% 受講後に作成

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

    • MDU 유인동
      知識共有者

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

  • devsn님의 프로필 이미지
    devsn

    受講レビュー 3

    平均評価 4.3

    5

    98% 受講後に作成

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

    • MDU 유인동
      知識共有者

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

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

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

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

    • MDU 유인동
      知識共有者

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

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

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

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

    • MDU 유인동
      知識共有者

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

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

    受講レビュー 5

    平均評価 4.8

    修正済み

    5

    100% 受講後に作成

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

    • MDU 유인동
      知識共有者

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

mdunivの他の講座

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

似ている講座

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