Software Engineer Intern at Box
By definition, a computer program is a collection of instructions that are designed to perform a specific task. It is inherently important for a developer to understand each individual instruction or step the program has to take in order to reach its goal correctly. Naturally, it can be valuable to a developer to have more control over these instruction depending on the program at hand. When the program is executing some specific instruction, the collection of steps that still need to be processed in order for the program to complete a computation is known as a continuation. Some languages are able to provide its users this ability to treat continuations as first class features, while some other languages require its users to implement them manually. Regardless of the kind of program being created, continuations can always be a valuable concept and tool for a developer to understand in order to be equipped to build smart and sound programs.
- Dec 09 2016 The Significance of Type Systems in Programming Languages
No matter what programming language is being used or how careful the developer is while using it, human error is always an unavoidable issue when building out programs of any scale. Among some of the popular approaches to mitigate the problem of human error, integrating type systems into a programming language can be a powerful way to go. Type systems introduce the concept of assigning types to different constructs within a program such as variables, functions, and expressions, and enforce consistency among the rules associated with each type. A type can be understood as just a classification of data which has an interface associated with it that describes how it is intended to be used. With a type system, the program is able to avoid type related errors, such as performing an operation on a type that does not support that operation. While there are many tradeoffs and design decisions that go into implementing a type system in a programming language, considering a type system and weighing the different tradeoffs relative to the program being built is an important decision to consider, and the benefits can be very worthwhile.
- Nov 02 2016 Automated Memory Management Systems with Garbage Collection
When creating any type of program or application, the developer almost always needs to consider memory usage. Whether it is a simple and small program, or a large and complex program, developers are going to have to worry about managing their memory consumption in one way or another. Problems can arise when mistakes are made; remembering to allocate and deallocate can become nontrivial, especially as the complexity of a program expands. With this problem in mind, garbage collectors were created; these tools act as a way to automate the process of reclaiming memory in a program by realizing when certain memory is no longer being used by the program and frees it to be used elsewhere. While there are many different techniques and strategies for solving this problem of automatically collecting memory which is no longer being used, garbage collection in general benefits the developer in many situations so long as they are willing to give up, in many cases, some performance and resources.
- Oct 19 2016 What's OCaml and Why You Should Care
In a world where there are hundreds of different programming languages to choose from, choosing the correct languages for a project or task can be overwhelming and difficult. With this being said, there are certainly different flavors of programming languages geared towards solving different types of problems. Among these, there is a family of general purpose functional languages called MetaLanguage (or ML as it’s commonly referred to). Within the family of MetaLanguage, there exists a uniquely interesting programming language called Objective Categorical Abstract Machine Language, which is commonly referred to as OCaml. OCaml was invented in 1996 by the Inria corporation. This language is primarily an extension of the Caml language with the inclusion of some object-oriented design. OCaml’s tool set and features are what make it a robust and powerful language to use in modern day applications.
- Aug 25 2016 Rolling Hash Data Structure and Applications
Let’s say you were given a massive text document and were allotted the task of finding a particular sentence somewhere inside it. This sentence may or may not actually exist inside of this document, but it’s your job to try and find it anyways.