You are on page 1of 3

Jonathan Chesney

English 12 Period 2

5/23/2017

Research Essay

Exploring Programming

Programming is a critical reason for why every computerized device functions. From

FitBits to desktops and from iPhones to space shuttles, programming plays a significant role in

their functions. A world without programming is almost inconceivable to much of todays society.

Given the increasing prevalence of programming, wanting to learn more about its inner functions

is merely natural. Programmers today use a plethora of techniques as they attempt to optimize the

efficiency of each individual line of code and larger functions. Through my mentor, I explored

how programming languages work at their core, how multiple programming languages can

interact with each other, and learned advanced programming techniques.

While there is a vast majority of computer languages, they all work similarly in a general

sense. Programming languages follow a general process where the code is executed in a compiler,

typically a program whose objective is to convert the code into binary. Binary is a combination of

zeros and ones that represent the tangible flow and absence of electrical current. Binary is the

most basic and necessary form of computer code as it features only two numbers and can be read

by any functional computer. Its simplicity and necessity are critical reasons for its prevalence. In

Java, the compiler transforms the code into bytecode, which is executable by the Java Virtual

Machine for its transformation into binary. The intermediary step of using bytecode may seem

unnecessary to the untrained eye, however, bytecodes are the machine language, [binary

equivalent], to the Java Virtual Machine and contribute to increased efficiency in producing

binary. Using an intermediary step is common practice for producing binary in most

programming languages and compilers because it decreases stress on the compiler, contributing to

greater efficiency. Binary and intermediary bytecodes are both different stages of the code-
refining process. Programming languages work at their core by using compilers who direct a

cascade of tasks to convert code into binary, which a computer can use to run a program.

As programs become large, programmers rescind from writing all of their code in one

language but rather in multiple. Different programming languages are best suited for different

tasks. Since all languages work differently, using a single programming language to implement

all aspects of the program may not be the best or most effective way to build the application.

With large programs, optimized resource allocation, which determines relatively how fast a

program will execute, is important to programmers because it can determine whether or not a

program sells on the marketplace. This process may seem complex to novice programmers, which

is partially accurate. Typically, the less complicated implementations are less efficient as the more

complicated implementations are more efficient. Supposing there is a large program with internal

files, Language A can dispense output into an internal file as Language B use the files contents

as input. In greater convolution, the Common Object Request Broker Architecture, or CORBA,

is a system that can allow communication between two different programming languages.

CORBA is regarded as very difficult to implement, however, it is very efficient. Advanced

programming teams usually split up and divide who completes the required sections in the given

languages. Another team may determine and handle the means of multi-language implementation.

Implementing multiple programming languages in a single program has varied difficulty and

efficiency as certain languages are more optimal for certain tasks than their counterparts. Using

multiple programming languages in singular programs is becoming increasingly existent as

substitute programs compete through efficiency.

As programmers program, the main goal is not simply writing a working program, but

writing a working program in the most efficient way possible. There is a wide variety of advanced

programming techniques that they can use to increase their efficiency. Recursion is a technique

used by an individual function to call itself until a certain output is achieved. Recursive programs

can range in their complexity, but can ultimately contribute to greater efficiency in some
languages. A recursive function is one of the most advanced concepts taught to novice

programmers, it almost always looks cleaner to ones eye, but it is not guaranteed to have greater

efficiency than a non-recursive version of the same function. Another example of an advanced

programming technique is polymorphism, which is the implementation of a function in a way that

allows it to perform more than one task. Polymorphism allows you define one interface and have

multiple implementations, due to its inherent complex nature. The implementation of

polymorphism is most widely used in inheritance and is critical for optimization of efficiency.

Writing out multiple functions instead of one can lead to the creation of a slower program that has

low desirability. Recursion and polymorphism both exemplify advanced programming techniques

that can increase efficiency. Although these techniques are meant for increasing efficiency, it is up

to the programmer to decide when their uses are necessary.

As I discussed programming with my mentor, I learned how programming languages

work at their core by exploring how compilers and binary work, how they interact with each other

in multi-language programs by learning about implementation techniques like CORBA, and

advanced programming techniques like recursion and polymorphism. Through this mentorship, I

learned valuable skills that bolster my programming experience. This has made me a better

programmer and a better listener. As I researched Computer Science and I plan to study Computer

Engineering, which is the study of how computer hardware and software interact with each other,

my mentorship area was focused on my future education and career path. I have gained valuable

study skills that will help me in college because this project taught me the importance of listening

carefully so that I can better understand topics. Mentorships that study computer science are

important to society because computer science has a bright future in the world and it is imperative

that the subsequent generations of students are properly educated.

You might also like