
BOOKS - PROGRAMMING - Algebra-Driven Design Elegant Software from Simple Building Blo...

Algebra-Driven Design Elegant Software from Simple Building Blocks
Author: Sandy Maguire
Year: 2020
Pages: 337
Format: PDF
File size: 13.4 MB
Language: ENG

Year: 2020
Pages: 337
Format: PDF
File size: 13.4 MB
Language: ENG

but it's not the whole story Type level programming allows us to take abstraction a step further by building programs from composable abstract pieces The pieces we build can be composed together in a wide variety of ways to create an elegant software architecture that adapts to changing requirements with ease In this talk I want to share with you how my team at IBM has been using algebra-driven design to elegantly solve complex problems using simple building blocks Now let's start with the basicsWhat is algebra-driven design? It's a way of thinking about programming based on algebraic structures like groups rings and fields Algebraic structures provide a common basis for many different mathematical structures which we use in computer science like graphs databases and programming languages That means we can leverage our knowledge of these structures in new areas of study and application If we look at computer science through the lens of algebra we can uncover deep connections between seemingly disparate concepts and techniques In other words algebra-driven design can help us see the forest rather than just the trees What does this mean for programmers? Well first it means developing a personal paradigm for perceiving the technological process of developing modern knowledge We need to understand how technology evolves and how it affects society.
но это не вся история Программирование на уровне типов позволяет нам сделать абстракцию на шаг дальше, создавая программы из составных абстрактных частей. Части, которые мы строим, могут быть составлены вместе самыми разными способами, чтобы создать элегантную архитектуру программного обеспечения, которая легко адаптируется к изменяющимся требованиям. В этом докладе я хочу рассказать вам, как моя команда в IBM использовала алгебраический дизайн для элегантного решения сложных задач, используя простое построение блоки Теперь начнем с основ Что такое конструирование на основе алгебры? Это способ думать о программировании, основанном на алгебраических структурах, таких как групповые кольца и поля. Алгебраические структуры обеспечивают общую основу для многих различных математических структур, которые мы используем в информатике, таких как базы данных графов и языки программирования. Это означает, что мы можем использовать наши знания об этих структурах в новых областях изучения и применения. Если мы посмотрим на информатику через призму алгебры, мы сможем обнаружить глубокие связи между, казалось бы, разрозненными концепциями и техниками. Другими словами, алгебраический дизайн может помочь нам увидеть лес, а не только деревья. Что это значит для программистов? Ну, во-первых, это означает разработку личной парадигмы восприятия технологического процесса развития современных знаний. Нам нужно понять, как развиваются технологии и как они влияют на общество.
mais ce n'est pas toute l'histoire La programmation au niveau des types nous permet de faire une abstraction un pas plus loin en créant des programmes à partir de parties abstraites composites. s pièces que nous construisons peuvent être composées ensemble de différentes façons pour créer une architecture logicielle élégante qui s'adapte facilement à l'évolution des exigences. Dans ce rapport, je veux vous dire comment mon équipe à IBM a utilisé le design algébrique pour résoudre élégamment des problèmes complexes en utilisant la construction simple de blocs Maintenant, commençons par les bases Qu'est-ce que la construction basée sur l'algèbre ? C'est une façon de penser la programmation basée sur des structures algébriques telles que les anneaux de groupe et les champs. s structures algébriques fournissent une base commune pour de nombreuses structures mathématiques différentes que nous utilisons en informatique, telles que les bases de données graphiques et les langages de programmation. Cela signifie que nous pouvons utiliser notre connaissance de ces structures dans de nouveaux domaines d'étude et d'application. nous examinons l'informatique à travers le prisme de l'algèbre, nous pouvons découvrir des liens profonds entre des concepts et des techniques apparemment disparates. En d'autres termes, la conception algébrique peut nous aider à voir la forêt, pas seulement les arbres. Qu'est-ce que cela signifie pour les programmeurs ? Tout d'abord, cela signifie développer un paradigme personnel de perception du processus technologique du développement des connaissances modernes. Nous devons comprendre comment les technologies évoluent et comment elles affectent la société.
pero no es toda la historia La programación a nivel de tipo nos permite hacer una abstracción un paso más allá, creando programas a partir de piezas abstractas compuestas. piezas que construimos se pueden componer juntas de muchas maneras diferentes para crear una arquitectura de software elegante que se adapte fácilmente a las necesidades cambiantes. En este informe, quiero decirles cómo mi equipo de IBM utilizó el diseño algebraico para resolver problemas complejos con elegancia, usando la construcción de bloques simples Ahora comencemos con lo básico Qué es el diseño basado en álgebra? Es una forma de pensar en la programación basada en estructuras algebraicas como anillos de grupo y campos. estructuras algebraicas proporcionan una base común para muchas estructuras matemáticas diferentes que usamos en informática, como bases de datos de gráficos y lenguajes de programación. Esto significa que podemos utilizar nuestro conocimiento de estas estructuras en nuevos campos de estudio y aplicación. miramos la informática a través del prisma del álgebra, podemos descubrir las profundas conexiones entre conceptos y técnicas aparentemente dispares. En otras palabras, el diseño algebraico puede ayudarnos a ver el bosque, no sólo los árboles. Qué significa esto para los programadores? Bueno, en primer lugar, significa desarrollar un paradigma personal de percepción del proceso tecnológico de desarrollo del conocimiento moderno. Necesitamos entender cómo evoluciona la tecnología y cómo afecta a la sociedad.
mas esta não é toda a história Programação ao nível de tipos nos permite abortar um passo além, criando programas a partir de partes abstratas compostas. As partes que construímos podem ser compostas de várias formas para criar uma arquitetura elegante de software que se adapta facilmente às necessidades em evolução. Neste relatório, quero dizer-lhe como a minha equipe na IBM usou o design algebraico para resolver os desafios com elegância, usando a simples construção de blocos Agora começamos com os fundamentos O que é uma construção baseada em álgebra? É uma forma de pensar em uma programação baseada em estruturas álgebricas, como anéis de grupo e campos. Estruturas algebraicas fornecem uma base comum para muitas estruturas matemáticas diferentes que utilizamos em informática, como bancos de dados de gráficos e linguagens de programação. Isso significa que podemos usar o nosso conhecimento sobre essas estruturas em novas áreas de estudo e aplicação. Se olharmos para a computação através do prisma de álgebra, podemos descobrir laços profundos entre conceitos e técnicas aparentemente divergentes. Em outras palavras, o design algebraico pode ajudar-nos a ver a floresta, não apenas as árvores. O que significa isso para os programadores? Bem, primeiro, significa desenvolver um paradigma pessoal de percepção do processo tecnológico para o desenvolvimento do conhecimento moderno. Precisamos de entender como as tecnologias evoluem e como elas afetam a sociedade.
ma non è tutta la storia Programmazione a livello di tipo ci permette di fare astrazione un passo oltre, creando programmi da componenti astratti. parti che stiamo costruendo possono essere composte insieme in vari modi per creare un'architettura software elegante che si adatta facilmente alle esigenze in evoluzione. In questo rapporto voglio raccontarvi come il mio team in IBM ha usato il design algebrico per affrontare le sfide in modo elegante, utilizzando la semplice costruzione dei blocchi Ora iniziamo con le basi Che cosa è la progettazione a base di algebra? È un modo per pensare a una programmazione basata su strutture algebriche, come anelli di gruppo e campi. strutture algebriche forniscono una base comune per molte diverse strutture matematiche che usiamo in informatica, come database grafici e linguaggi di programmazione. Ciò significa che possiamo utilizzare la nostra conoscenza di queste strutture in nuovi campi di studio e applicazione. Se guardiamo l'informatica attraverso il prisma dell'algebra, possiamo scoprire i legami profondi tra concetti apparentemente disparati e tecniche. In altre parole, il design algebrico può aiutarci a vedere la foresta, non solo gli alberi. Cosa significa per i programmatori? Beh, innanzitutto, questo significa sviluppare un paradigma personale per la percezione del processo tecnologico dello sviluppo della conoscenza moderna. Dobbiamo capire come evolvono le tecnologie e come influenzano la società.
aber das ist nicht die ganze Geschichte Programmierung auf Typenebene ermöglicht es uns, die Abstraktion einen Schritt weiter zu bringen, indem wir Programme aus zusammengesetzten abstrakten Teilen erstellen. Die von uns gebauten Teile können auf vielfältige Weise zusammengesetzt werden, um eine elegante Softwarearchitektur zu schaffen, die sich leicht an sich ändernde Anforderungen anpasst. In diesem Vortrag möchte ich Ihnen erzählen, wie mein Team bei IBM algebraisches Design verwendet hat, um komplexe Probleme mit einfachen Bausteinen elegant zu lösen. Beginnen wir nun mit den Grundlagen. Was ist algebraisches Design? Es ist eine Art, über Programmierung nachzudenken, die auf algebraischen Strukturen wie Gruppenringen und Feldern basiert. Algebraische Strukturen bieten eine gemeinsame Grundlage für viele verschiedene mathematische Strukturen, die wir in der Informatik verwenden, wie Graphendatenbanken und Programmiersprachen. So können wir unser Wissen über diese Strukturen in neue Studien- und Anwendungsfelder einbringen. Wenn wir die Informatik durch das Prisma der Algebra betrachten, können wir tiefe Verbindungen zwischen scheinbar unterschiedlichen Konzepten und Techniken entdecken. Mit anderen Worten, algebraisches Design kann uns helfen, den Wald zu sehen, nicht nur die Bäume. Was bedeutet das für Programmierer? Nun, erstens bedeutet es, ein persönliches Paradigma der Wahrnehmung des technologischen Prozesses der Entwicklung des modernen Wissens zu entwickeln. Wir müssen verstehen, wie sich Technologien entwickeln und wie sie die Gesellschaft beeinflussen.
ale to nie jest cała historia Programowanie na poziomie typu pozwala nam zrobić abstrakcję krok dalej, tworząc programy z kompozytowych abstrakcyjnych części. Elementy, które budujemy, można połączyć na różne sposoby, aby stworzyć elegancką architekturę oprogramowania, która łatwo dostosowuje się do zmieniających się wymagań. W tym przemówieniu chcę Wam powiedzieć, jak mój zespół w IBM wykorzystał projekt algebraiczny do eleganckiego rozwiązywania złożonych problemów za pomocą prostych bloków budowlanych. Zacznijmy od podstaw. Czym jest budowa oparta na algebrze? Jest to sposób myślenia o programowaniu w oparciu o struktury algebraiczne, takie jak pierścienie grupowe i pola. Struktury algebraiczne stanowią wspólne ramy dla wielu różnych struktur matematycznych, które stosujemy w informatyce, takich jak bazy danych wykresów i języki programowania. Oznacza to, że możemy wykorzystać naszą wiedzę o tych strukturach w nowych dziedzinach studiów i zastosowań. Jeśli spojrzymy na informatykę poprzez soczewkę algebry, możemy odkryć głębokie powiązania między pozornie rozbieżnymi pojęciami i technikami. Innymi słowy, algebraiczna konstrukcja pomoże nam zobaczyć las, a nie tylko drzewa. Co to oznacza dla programistów? Po pierwsze, oznacza to opracowanie osobistego paradygmatu postrzegania technologicznego procesu rozwoju nowoczesnej wiedzy. Musimy zrozumieć, w jaki sposób technologia ewoluuje i jak wpływa na społeczeństwo.
אבל זה לא כל הסיפור תכנות סוג רמה מאפשר לנו לקחת מופשט צעד קדימה על ידי יצירת תוכניות מחלקים מופשטים מרוכבים. החלקים שאנו בונים יכולים להרכיב במגוון דרכים כדי ליצור ארכיטקטורת תוכנה אלגנטית שמתאימה בקלות לדרישות משתנות. בהרצאה זו, ברצוני לספר לכם כיצד הצוות שלי ב-IBM השתמש בעיצוב אלגברי כדי לפתור באלגנטיות בעיות מורכבות באמצעות אבני בניין פשוטות. עכשיו בואו נתחיל עם היסודות. מהי בנייה מבוססת אלגברה? זוהי דרך לחשוב על תכנות המבוסס על מבנים אלגבריים כמו טבעות קבוצה ושדות. מבנים אלגבריים מספקים מסגרת משותפת למבנים מתמטיים רבים שאנו משתמשים במדעי המחשב, כגון מסדי נתונים גרף ושפות תכנות. זה אומר שאנחנו יכולים להשתמש בידע שלנו על מבנים אלה בתחומים חדשים של לימוד ויישום. אם נתבונן במדעי המחשב דרך עדשת האלגברה, נוכל לגלות קשרים עמוקים בין מושגים וטכניקות שונות לכאורה. במילים אחרות, עיצוב אלגברי יכול לעזור לנו לראות את היער, לא רק את העצים. מה זה אומר למתכנתים? ובכן, ראשית, זה אומר לפתח פרדיגמה אישית לתפיסה של התהליך הטכנולוגי של התפתחות הידע המודרני. עלינו להבין כיצד הטכנולוגיה מתפתחת וכיצד היא משפיעה על החברה.''
ancak bu hikayenin tamamı değil Tip düzeyinde programlama, kompozit soyut parçalardan programlar oluşturarak soyutlamayı bir adım daha ileri götürmemizi sağlar. Oluşturduğumuz parçalar, değişen gereksinimlere kolayca uyum sağlayan zarif bir yazılım mimarisi oluşturmak için çeşitli şekillerde bir araya getirilebilir. Bu konuşmada, IBM'deki ekibimin basit yapı taşlarını kullanarak karmaşık problemleri zarif bir şekilde çözmek için cebirsel tasarımı nasıl kullandığını anlatmak istiyorum. Şimdi temel şeylerle başlayalım. Cebir tabanlı yapı nedir? Grup halkaları ve alanlar gibi cebirsel yapılara dayalı programlama hakkında düşünmenin bir yoludur. Cebirsel yapılar, grafik veritabanları ve programlama dilleri gibi bilgisayar bilimlerinde kullandığımız birçok farklı matematiksel yapı için ortak bir çerçeve sağlar. Bu, bu yapılar hakkındaki bilgimizi yeni çalışma ve uygulama alanlarında kullanabileceğimiz anlamına gelir. Bilgisayar bilimine cebir merceğinden bakarsak, görünüşte farklı kavramlar ve teknikler arasındaki derin bağlantıları keşfedebiliriz. Başka bir deyişle, cebirsel tasarım sadece ağaçları değil, ormanı görmemize yardımcı olabilir. Bu programcılar için ne anlama geliyor? İlk olarak, bu, modern bilginin gelişiminin teknolojik sürecinin algılanması için kişisel bir paradigma geliştirmek anlamına gelir. Teknolojinin nasıl geliştiğini ve toplumu nasıl etkilediğini anlamamız gerekiyor.
ولكن هذه ليست القصة الكاملة تسمح لنا البرمجة على مستوى النوع باتخاذ خطوة إلى الأمام من خلال إنشاء برامج من أجزاء مجردة مركبة. يمكن تجميع القطع التي نبنيها معًا بعدة طرق لإنشاء بنية برمجية أنيقة تتكيف بسهولة مع المتطلبات المتغيرة. في هذا الحديث، أريد أن أخبركم كيف استخدم فريقي في IBM التصميم الجبري لحل المشاكل المعقدة بأناقة باستخدام لبنات بناء بسيطة. الآن لنبدأ بالأساسيات. ما هو البناء القائم على الجبر ؟ إنها طريقة للتفكير في البرمجة القائمة على الهياكل الجبرية مثل حلقات المجموعة والحقول. توفر الهياكل الجبرية إطارًا مشتركًا للعديد من الهياكل الرياضية المختلفة التي نستخدمها في علوم الكمبيوتر، مثل قواعد بيانات الرسم البياني ولغات البرمجة. هذا يعني أنه يمكننا استخدام معرفتنا بهذه الهياكل في مجالات جديدة للدراسة والتطبيق. إذا نظرنا إلى علوم الكمبيوتر من خلال عدسة الجبر، يمكننا اكتشاف روابط عميقة بين المفاهيم والتقنيات التي تبدو متباينة. بعبارة أخرى، يمكن أن يساعدنا التصميم الجبري في رؤية الغابة، وليس فقط الأشجار. ماذا يعني هذا للمبرمجين ؟ حسنًا، أولاً، هذا يعني تطوير نموذج شخصي لتصور العملية التكنولوجية لتطوير المعرفة الحديثة. نحن بحاجة إلى فهم كيفية تطور التكنولوجيا وكيف تؤثر على المجتمع.
그러나 이것은 전체 스토리 유형 레벨 프로그래밍이 아니므로 복합 추상 부품으로 프로그램을 작성하여 한 걸음 더 나아갈 수 있습니다. 우리가 만든 작품은 변화하는 요구 사항에 쉽게 적응할 수있는 우아한 소프트웨어 아키텍처를 만드는 다양한 방법으로 구성 할 수 있습니다 이 강연에서 IBM의 팀이 어떻게 대수 디자인을 사용하여 간단한 빌딩 블록을 사용하여 복잡한 문제를 우아하게 해결했는지 이야기하고 싶습니다. 이제 기본 사항부터 시작합시다. 대수 기반 구조는 무엇입니까? 그룹 링 및 필드와 같은 대수 구조를 기반으로 프로그래밍을 생각하는 방법입니다. 대수 구조는 그래프 데이터베이스 및 프로그래밍 언어와 같이 컴퓨터 과학에서 사용하는 다양한 수학 구조에 대한 공통 프레임 워크를 제공합니다. 이것은 새로운 연구 및 응용 분야에서 이러한 구조에 대한 지식을 사용할 수 있음을 의미합니다 대수 렌즈를 통해 컴퓨터 과학을 살펴보면 겉보기에 서로 다른 개념과 기술 사이의 깊은 연결을 발견 할 수 있습니다. 다시 말해, 대수 디자인은 나무뿐만 아니라 숲을 보는 데 도움이 될 수 있습니다. 이것이 프로그래머에게 무엇을 의미합니까? 첫째, 이것은 현대 지식 개발의 기술 과정에 대한 인식을위한 개인적인 패러다임을 개발하는 것을 의미합니다. 우리는 기술이 어떻게 발전하고 어떻게 사회에 영향을 미치는지 이해해야
しかし、これは全体の話ではありません型レベルのプログラミングは、複合抽象部分からプログラムを作成することによって、さらに一歩抽象化を取ることができます。私たちが構築する作品は、さまざまな方法で組み立てることができ、変化する要件に容易に適応するエレガントなソフトウェアアーキテクチャを作成できます。この講演では、IBMのチームがどのように代数設計を使って単純な構成要素を使って複雑な問題をエレガントに解決したかをお話ししたいと思います。では、基本から始めましょう。代数ベースの構造とは何ですか?グループリングやフィールドなどの代数構造に基づいてプログラミングを考える方法です。代数構造は、グラフデータベースやプログラミング言語など、コンピュータサイエンスで使用される多くの異なる数学構造に共通のフレームワークを提供します。これは、私たちがこれらの構造に関する知識を研究と応用の新しい分野で利用できることを意味します。代数のレンズを通して計算機科学を見ると、一見異なる概念と技術の間の深い関係を発見することができます。言い換えれば、代数的なデザインは、木だけでなく、森を見るのに役立ちます。これはプログラマにとって何を意味するのでしょうか?まあ、第一に、これは近代的な知識の開発の技術的プロセスの認識のための個人的なパラダイムを開発することを意味します。テクノロジーがどのように進化し、社会にどのような影響を与えるのかを理解する必要があります。
但這並不是整個故事類型級別的編程使我們可以通過創建由復合抽象部分組成的程序來進一步進行抽象。我們構建的部件可以通過多種方式組合在一起,以創建一個優雅的軟件體系結構,輕松適應不斷變化的需求。在這份報告中,我想告訴你我在IBM的團隊如何使用代數設計來優雅地解決復雜的問題,使用簡單的塊構建現在從基礎開始基於代數的構造是什麼?這是一種基於代數結構(例如群環和字段)的編程的思考方法。代數結構為我們計算機科學中使用的許多不同的數學結構(例如圖數據庫和編程語言)提供了通用框架。這意味著我們可以在新的研究和應用領域利用我們對這些結構的了解。如果我們從代數的角度看計算機科學,我們可以發現看似不同的概念和技術之間的深層聯系。換句話說,代數設計可以幫助我們看到森林,而不僅僅是樹木。這對程序員意味著什麼?首先,這意味著發展個人範式來理解現代知識發展的過程過程。我們需要了解技術是如何發展的,以及它們如何影響社會。
