CourseHunter
  • Категории
    • Frontend logo Frontend
      • Angular logo Angular
      • HTML logo HTML
      • CSS logo CSS
      • JavaScript logo JavaScript
      • Vue logo Vue
      • jQuery logo jQuery
      • React logo React
      • AngularJS logo AngularJS
      • Backbone logo Backbone
      • TypeScript logo TypeScript
      • Ember logo Ember
      • Next.js logo Next.js
      • Elm logo Elm
      • Svelte logo Svelte
      • Single SPA logo Single SPA
      • Three.js logo Three.js
      • D3.js logo D3.js
      • RxJS logo RxJS
      • WebGL logo WebGL
      • barba.js logo barba.js
    • Backend logo Backend
      • PHP logo PHP
      • Python logo Python
      • Ruby on Rails logo Ruby on Rails
      • Yii logo Yii
      • Laravel logo Laravel
      • SQL logo SQL
      • Ruby logo Ruby
      • Symfony logo Symfony
      • Java logo Java
      • Scala logo Scala
      • Node.js logo Node.js
      • MongoDB logo MongoDB
      • Golang (Google Go) logo Golang (Google Go)
      • Slim logo Slim
      • Silex logo Silex
      • Firebase logo Firebase
      • C Sharp (C#) logo C Sharp (C#)
      • Deno logo Deno
      • Redis logo Redis
      • Django logo Django
      • NestJS logo NestJS
      • Spring logo Spring
      • Spring Boot logo Spring Boot
      • Spring Data logo Spring Data
      • Spring Cloud logo Spring Cloud
      • Spring Security logo Spring Security
      • Spring Integration logo Spring Integration
      • Spring HATEOAS logo Spring HATEOAS
      • Spring MVC logo Spring MVC
      • Elixir logo Elixir
      • Phoenix logo Phoenix
    • System programming logo System programming
      • Rust logo Rust
      • WebAssembly logo WebAssembly
      • C++ logo C++
    • Marketing logo Marketing
      • SEO logo SEO
    • Video and 3D logo Video and 3D
      • Blender logo Blender
      • Cinema 4D logo Cinema 4D
      • ZBrush logo ZBrush
    • Graphic logo Graphic
      • Figma logo Figma
      • Sketch logo Sketch
      • Photoshop logo Photoshop
      • After Effects logo After Effects
      • Illustrator  logo Illustrator
      • Adobe XD logo Adobe XD
      • Lightroom logo Lightroom
      • CorelDRAW logo CorelDRAW
    • DevOps logo DevOps
      • AWS logo AWS
      • Azure logo Azure
      • Docker logo Docker
      • Git logo Git
      • GitHub logo GitHub
      • Gitlab logo Gitlab
      • Google Cloud logo Google Cloud
      • Grafana logo Grafana
      • Kubernetes logo Kubernetes
      • Jenkins logo Jenkins
      • Terraform logo Terraform
      • Другое logo Другое
    • Tools logo Tools
      • GraphQL logo GraphQL
      • Flux logo Flux
      • Webpack logo Webpack
      • Ansible logo Ansible
      • Gulp logo Gulp
      • Grunt logo Grunt
      • Visual Studio Code logo Visual Studio Code
      • VIM logo VIM
      • OpenCV logo OpenCV
      • Salt logo Salt
      • SVN logo SVN
      • Atom logo Atom
      • Elasticsearch logo Elasticsearch
      • Сборки, готовые решения logo Сборки, готовые решения
      • Electron logo Electron
      • Chrome DevTools logo Chrome DevTools
      • Yarn logo Yarn
      • Babel logo Babel
      • Grep logo Grep
      • npm logo npm
      • Vite logo Vite
      • Gatsby logo Gatsby
      • PhpStorm logo PhpStorm
      • Webflow logo Webflow
      • Hibernate logo Hibernate
      • Socket.io logo Socket.io
      • Bash logo Bash
    • Разработка мобильных приложений logo Разработка мобильных приложений
      • React Native logo React Native
      • Ionic logo Ionic
      • Swift logo Swift
      • Progressive Web App (PWA) logo Progressive Web App (PWA)
      • Core Data logo Core Data
      • Xamarin logo Xamarin
      • NativeScript logo NativeScript
      • Dart и Flutter logo Dart и Flutter
    • Gamedev logo Gamedev
      • Unreal Engine logo Unreal Engine
      • Unity logo Unity
    • CMS logo CMS
      • Wordpress logo Wordpress
      • OpenCart logo OpenCart
      • Drupal logo Drupal
      • Joomla logo Joomla
      • 1C-Bitrix logo 1C-Bitrix
      • MODX logo MODX
      • Magento logo Magento
      • Shopify logo Shopify
    • Blockchain logo Blockchain
      • Криптовалюты logo Криптовалюты
      •  Decentralized Applications (dApps) (Web 3) logo Decentralized Applications (dApps) (Web 3)
    • Тестирование logo Тестирование
      • Postman logo Postman
      • Selenium logo Selenium
      • Appium logo Appium
      • Protractor logo Protractor
      • WebdriverIO logo WebdriverIO
      • Cypress logo Cypress
      • Playwright logo Playwright
    • Другое logo Другое
      • Linux logo Linux
      • WebRTC logo WebRTC
      • OpenGL Shading Language (GLSL) logo OpenGL Shading Language (GLSL)
    • Подготовка к собеседованию logo Подготовка к собеседованию
    • Обработка и анализ данных logo Обработка и анализ данных
    • Информационная безопасность logo Информационная безопасность
      • Этический взлом / Тестирование на проникновение logo Этический взлом / Тестирование на проникновение
    • Английский язык logo Английский язык
    • Конференции logo Конференции
  • Источники
  • Все курсы
    • Популярные
    • Бесплатные (100+ Курсов)
  • Разделы
  • Книги
    • Бесплатные
    • Популярные
  • Краудфандинг logo Краудфандинг
🇺🇸 English
🇷🇺 Русский
🇺🇦 Українська
Голубая
Фиолетовая
Cветлая
Терминал
Norton
Войти
Главная страница Категория другое [Книга] Как создавать прагматичные, легкие языки

[Книга] Как создавать прагматичные, легкие языки

How to Create Pragmatic, Lightweight Languages

Federico Tomassetti logo Federico Tomassetti
[Книга] Как создавать прагматичные, легкие языки logo Начать Сейчас
Категория
Другое
Дата добавления
12.06.2020
Язык
English

Создавайте языки программирования как профессионал. Узнайте, как создать что-то полезное в реальном мире. Настоящий язык программирования, с эффективным анализатором и полным компилятором. Язык с собственным редактором. Это не о создании игрушек.


Нет необходимости изобретать велосипед: мы повторно используем компоненты с открытым исходным кодом и организуем их вместе, чтобы получить что-то полезное с целенаправленными усилиями.

Считаете ли вы, что невозможно создать парсер, интерпретатор, редактор и симулятор менее чем в 1000 строк кода? Подумай еще раз. 

С помощью этой книги вы научитесь:

  • разрабатывать инструменты для языка, такие как механизм статического анализа для Java или переносчик из Python в JavaScript;
  • создать предметно-ориентированный язык (DSL), язык, который действительно хорош в конкретных задачах, таких как HTML или SQL;
  • создать язык общего назначения (GPL), язык, подходящий для любой задачи, такой как C # или Ruby;

Создание инструмента или DSL может упростить вашу жизнь программиста. И когда ваш работодатель слышит магические слова «повысить производительность», это может даже помочь в вашей работе.

Создание эзотерического языка программирования может быть отличным способом выдвинуть новую идею. Чтобы показать, что все можно сделать по-другому.

Труднее создать GPL, но это можно сделать: Kotlin, Go, Ruby, Julia, Rust и т. д. Просто подумайте о множестве новых языков, созданных за последнее десятилетие. Многие из них закрепились в различных сообществах и сделали разработчиков счастливее.

Немного теории и много кода

Когда я учился строить языки, я был разочарован: я мог просто найти базовые учебники здесь и там, но чего не хватало, так это полного курса. Одного курса, чтобы вести меня с самого начала и до конца. Всякий раз, когда я находил что-то более продвинутое, оно было слишком абстрактным: много теории компилятора и недостаточно кода.

Я хотел книгу с четким планом и прагматичным подходом, но ее не было.

Именно тогда я решил научиться создавать языки самостоятельно. Мне потребовались годы профессионального опыта в построении языков. Теперь я могу поделиться этими знаниями, чтобы вы могли научиться создавать свой собственный язык за несколько недель.

Это все еще будет много работы, но вы будете иметь помощь.

Как эта книга поможет вам

В этой книге показано, как повторно использовать существующие библиотеки и платформы для создания необходимой экосистемы для поддержки наших языков.

Раньше затраты на создание механизмов для правильной поддержки языка были очень высокими.

Сегодня, приложив ограниченные усилия, мы можем разработать язык и:

  • получить быстрый парсер из краткого определения грамматики;
  • получить валидацию и преобразование модели с небольшим количеством кода;
  • генерировать байт-код JVM и получать совместимость с другими языками JVM или генерировать язык с помощью LLVM;
  • получить богатые редакторы с подсветкой синтаксиса и автозаполнением.

Мы покажем вам, как построить все это и многое другое, разумно определяя мелкие компоненты. Результат будет чем-то солидным, полным и понятным.

Посмотреть больше

Авторы

Изображение источника Federico Tomassetti

Federico Tomassetti

Федерико Томассетти (Federico Tomassetti) - консультант по архитектуре программного обеспечения, специализирующийся на языковой инженерии: я создаю языки, редакторы, парсеры, компиляторы, интерпретаторы и симуляторы. У меня безумная страсть к разработке программного обеспечения: мне это нравилось с 8 лет, и я все время думаю об этом. Я сделал несколько вещей: получил докторскую степень в области разработки программного обеспечения, провел исследо

Автор
Посмотреть
+1

Категории

Другое logo

Другое

Комментарии
User Avatar
Команда внимательно читает ваши комментарии и оперативно на них реагирует. Вы можете спокойно оставлять запросы на обновления или задавать любые вопросы о курсе здесь.

Ресурс видеоуроков программирования для front и back end разработчиков. Бери знания своего профиля у нас, ведь мы самые лучшие блеать. Серьезно.

Категории
Все категории JavaScript React.js Python Java Golang (Google Go) AWS Docker Другое Подготовка к собеседованию Обработка и анализ данных
Источники
Все источники Andreas Kretz balun.courses Cosden Solutions Dometrain Erik Reinert frontendmasters udemy Vladimir Shmondenko aka Mr Anatoly zerotomastery.io
Telegram CourseTrain Цена Контакты Распространенные вопросы Плейлисты Приватность Условия
Темы:
Язык: