JumpStart: Lesson 5
- Develop an understanding of how languages are used in combination to create a web application
During the course of the JumpStart curriculum we will be primararily focused on learning Ruby. Later, during the classroom curriculum, we will learn some other programming languages. In this lesson, we will discuss the different languages that can be used along with Ruby and how those all play together in your journey in learning to program. In a discussion about programming languages, a preliminary question that one might ask is, why are there so many programming languages? Some languages are better at certain things than others.
Programming languages exist so that humans can give instructions to computers. Fundamentally, programming is about communication. Programming languages are similar to human spoken languages, they have dialects, grammars, colloquialisms, idioms, and parts of speech.
There are two main ways we can classify programming languages, by level and by type (compiled or interpreted).
The level describes how close the language is to being binary code. Low-level languages like C, tend to be more difficult for humans to read than other languages. High-level languages like Java, Python, and Ruby tend to be more abstract, easier for humans to read. High-level languages also do a lot more of the background tasks for the software developer.
Compiled languages are converted to binary code (e.g., C, C++, Java) before they are executed. Interpreted languages can be translated or directly executed, the code does not get directly converted to binary, the program that runs the program is the one that communicates directly with the computer.
In Addition, these compiled and interpreted languages can be divided into dynamically typed and statically typed languages. Statically typed programming languages do type checking (the process of verifying and enforcing the constraints of types) at compile-time as opposed to run-time. Dynamically typed programming languages do type checking at run-time as opposed to compile-time.
Ruby is a high-level, dynamically typed language. Ruby is different than other programming languages. It was written with human communication in mind, rather than computer optimization. Its creator wanted to create a programming language that was fun for programmers. Ruby is a programming language which was created to make developers have fun and be productive at the same time. Ruby was first written in 1993 by Yukihiro "Matz" Matsumoto. "Ruby is for People. I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language." - Matz
HTML (Hyper-Text Markup Language) is a markup language. CSS (Cascading Style Sheets) is a style sheet language. These two technologies work together for structuring and styling the content on a web page.
You can think of the HTML as the "skeleton" of a web page. The set up, and structure for how each piece is organized. The CSS is the "clothes" of the skeleton. How each piece looks, colors, sizes, styles and relationship to other elements on the page.
JavaScript is a another high-level dynamically typed language. JavaScript is used along side HTML and CSS as one of the most important languages in web programming. In many applications, we use JavaScript to provide a more dynamic and responsive experience for the end user.
Frameworks allow us to leverage the hard work of the software developers that came before us so that we can create software more quickly. Frameworks make it possible to build and deploy applications. Frameworks may include programs, compilers, code libraries, tool sets, and application programming interfaces (APIs).
Ruby on Rails, or Rails for short, is a Model-View Controller (MVC) framework which provides the default database, web service and web pages. Ruby on Rails allows software developers to create an entire web application.
ReactJS is a JavaScript framework for building user interfaces. React allows front-end developers organize their application and provide quick and powerful single-page-applications (SPAs).