Entradas

Mostrando entradas de abril, 2020

Entry #8: Lin Clark on WebAssembly

"Lin Clark on WebAssembly" is a 62 minutes long podcast produced in 2018 by Software Engineering Radio with Lin Clark as a guest. The podcast talks about WebAssembly, its goals or use cases, how it interacts with the browser, how it changes the development process, its security, and the future of it. JavaScript has been the most used programming language to develop for web browsers for the last 20 years. The browser interprets and executes code in a virtual machine that only runs JavaScript. However, JavaScript is not ideal for every task that we want to perform in a browser. WebAssembly was created to get better performance on the web and solve this problem.  WebAssembly is a binary instruction format for a stack-based virtual machine for web browsers. It is designed like a compiler of high-level languages like C, C++, or Rust. It enables deploys for client and server web applications. Web Assembly is still under development, but, more programming languages will be

Entry #7: Building Server-Side Web Language Processors

“Building Server-Side Web Language Processors” is an article written by Ariel Ortiz, who is my professor during the Compilers Design course. The article talks about the advantages of building a language processor that actually runs on the web, instead of a processor that just runs on a command-line shell. Creating a web language processor can be a great challenge, as it requires to have knowledge in: Compilers design, Web server creation, Front-end design, and Security Management. The strategy used by the author consists of programming a web server from scratch and should be able to serve static resources and host a language processor that generates dynamic content based on the input and send the result to the client.  The implementation uses JavaServer Pages, which allows the processor to use custom tags, that are evaluated and produce an output. One of the advantages of this implementation is that the language processor has access to all the facilities provided by the hostin

Entry #6: Ruby and the Interpreter Pattern

“Language Design and Implementation using Ruby and the Interpreter Pattern” is an article written in 2008 by Ariel Ortiz, who has been my professor in the Programming Languages, Compilers Design and Software Design and Architecture courses. The article talks about the framework called S-expression Interpreter Framework (SIF) which is a tool the author/professor has been using with his students in the Software Design and Architecture and Programming Languages courses. The framework is written in Ruby, the dynamically typed programming language, which makes the construction of language interpreters more simple. Ruby has hashes, garbage collection, open classes, and built-in regular expressions. The interpreter pattern is one of the Gang of Four (GoF) software architecture patterns which are used to define a language with a well-defined grammar. A compiler can be seen as an interpreter, so the interpreter pattern is a perfect approach to design a compiler. A Symbolic notation, al