Anda di halaman 1dari 20

Konduru 1

A Place to Start Programming: An


Evaluation of Computer Programming
Languages Through Debugging Methods
Mohith Konduru
Independent Research G/T I
01 May 2018

Advisor: Vikram Somalaraju


Instructor: E. Leila Chawkat
Konduru 2

Abstract

The effectiveness of certain languages when iterating code are very debatable. Some

people find various programming languages easier to use for different reasons. Those reasons

include the languages mechanics or the applications associated with it. Programming languages

all vary in certain categories such as errors caught, run time and user-friendliness. All of the

characteristics were considered and a scale was created to evaluate each application in each

programming language to ultimately solve the problem of which programming language is the

best place to start for beginners who are proficient learners in the field of computer science. An

experiment will be conducted that allows programming applications of various languages (C++,

Java and Python) to iterate programs. Once each application does so, the performance will be

evaluated using the scale mentioned before. In the end of the research, a programming language

that is a good place for beginners to start programming in will be determined.


Konduru 3

Table of Contents
1. Introduction
2. Literature Review
3. Data Collection
4. Conclusion
5. References
Konduru 4

A Place to Start Programming: An Evaluation of Computer Programming Languages


Through Debugging Methods

Introduction

Computer programming is creating a set of instructions that allows a computer to

perform human-like tasks. It once started out as a simple activity that was done to past time and

explore technology. Schools are even beginning to integrate computer programming in their

course selections for students. However, schools often misinterpret what language is the best to

teach the students. There are many different computer programming languages and programming

tools to program on. The three most popular are Python, C++, and Java. Python is referred to as a

high-interpreted programming language that is used for general life purposes. Java programming

is a language that enforces an object-oriented approach that makes it simpler for users. C++ is

the complex language in which professionals use for scripting and highly advanced web

development. Many might find different reasons to get involved in a certain programming

language rather than another. However certain characteristics must be taken into consideration

when beginning to program.

Each programming language is viewed differently amongst programmers due to their

various ways of teaching beginners and the distinctive characteristics about each. The language

of Java consists of a unique portability and it has the capability of operating similarly on any

hardware or operating system. Java has always been the primary language for software

developers to use because it accomplishes the complex computational tasks with simplicity. C++

is a sophisticated, efficient and a general-purpose programming language based on user

experience and is always changing and developing due to the fact that there were many bugs,

incompatibilities and incongruities when it first started to be used. A C++ programmer usually
Konduru 5

spends a considerable amount of effort to no other end than to make the program work. Meaning

even the simplest tasks may take a while to accomplish. Python is referred to as a

high-interpreted programming language that is used for general life purposes. It combines simple

syntax, abundant online resources and a rich ecosystem of scientifically focused toolkits with a

heavy emphasis on community. This programming language’s growth in popularity is credited to

the usage of big data analytics.

Literature Review

The conclusions that have been drawn by the experiment have been found in many

sources that support it. These sources agree that Python is the most user-friendly and easiest

program to start learning if one wants to begin programming. Python is referred to as a

high-interpreted programming language that is used for general life purposes (Perkel).

It combines simple syntax, abundant online resources and a rich ecosystem of scientifically

focused toolkits with a heavy emphasis on community. This programming language’s growth in

popularity is credited to the usage of big data analytics (Perkel). Python has been extensively

used in the industry for anything from building Raspberry Pi applications to configuration

servers and using a scripting language for large scale applications (Cardoza). The extensive use

of Python is obvious and the increasing interest with the language is due to the features it offers

users and programming characteristics it provides. Many computer programming languages have

a something that it is known for. Python is used in every domain. Such as system operations, web

development, deployment, scientific modeling, etc. Python is the most versatile programming

language (Cardoza). The sources evaluated into determining the results of the research even
Konduru 6

support how effective Python is to the programming environment and the users. Python allows

the users to interact with their errors and take away from their programming experience

(Cardoza). The environment that builds Python applications advocated for beginners and

proficient learners. And with the new wave of students wanting to learn computer science and

computational skills Python has gained in popularity and effectiveness when compared to other

program languages (Perkel).

The evidence of Python’s effectiveness is clear, but when compared to the other common

coding languages C++ and Java it stands out because the features provided in the other two

languages are inferior compared to Python. A C++ programmer usually spends a considerable

amount of effort to no other end than to make the program work. Meaning even the simplest

tasks may take a while to accomplish (Becker). This type of code is not the best for beginners

because people who are just starting to code may find it tedious and time consuming. C++ is

always changing and developing due to the fact that there were many bugs, incompatibilities and

incongruities when it first started to be used (Becker). The language is hard to keep up with and

may even confuse people using it, whereas Python remains constant and abides by the most

important characteristic of programming which is consistency.

Java also does not compare to the valuable assets and characteristics of Python. Java is

broken up into five difficult subtopics that must be understood to excel in Java programming.

Those subtopics are generics, nested classes, inheritance, interfaces and overriding methods.

Overloading methods are when two methods have identical names, but do different things. This

often confuses most software application tools. Not be to mistaken with overloading methods,

Overriding a method is when a function within the method refers to the method it is in. Both of
Konduru 7

these cause issues for a programming application when it debugs and tries to run code entered by

a user (Perry). Inheritance is the idea that allows a programmer to create classes that are derived

from other classes. The class inherited is referred to as the superclass. This is used when two or

more classes are dependent upon each other to perform a task or are similar in function (Perry).

Interfaces are special classes/methods in java because they can only contain it’s name and

parameters of the whole code. They are used often for simple functions that don’t require

complex statements to iterate (Perry). Generics are a new aspect to Java that was added in 2004.

They were designed to extend Java's type system to allow a type or method to operate on objects

of various types while providing compile-time type safety. So complex code can run at a faster

rate and not cause your computer to crash (Perry). Nested classes are classes within other classes.

They are important because they allow a specific function to occur by giving the most enclosed

class access to all the other classes in the program (Perry). It is proven to be difficult to

understand these principles, whereas in Python no extensive prior knowledge is needed. One can

easily get involved and stay involved because of the consistency within all of the Python

programming applications.

Many sources also support the idea of consistency being the most prevalent and

significant idea to consider when starting to program. And it is evident that Python embodies that

idea greatly. Coding professionals know that the act of coding doesn’t have a right or wrong way

to do it. A coder's background and training, among other factors, will greatly influence the way

he or she assigns codes (Dimick). The best way to ensure coding consistency is through the even

and routine disbursement of information and education among a coding group or class (Dimick).

When coding and developing as a programmer maintaining the same coding style and using the
Konduru 8

same or similar applications is important to learn more and grow (Ars Technica). These are

important factors to consider when it comes to consistency within programming.

Some may even ask why this topic is worth studying. Many sources have argued that

computer science and computer programming in particular is the future. ​In the US, there is

currently a lot of argument about the need to make teaching programming mandatory. For

teachers with no background in computer science, starting a course in programming might be a

challenge. In reality, you don’t need to be a computer expert to teach students how to program.

The key is to start small, and then allow the students to drive the learning (Heggart). The skill of

learning to program is an educational medium that relates to the ability to facilitate and extend

people’s natural ability and drive to construct, hypothesize, explore, experiment, evaluate, draw

conclusions all in an independent manor (Heggart).​ It is a very versatile subject matter because it

can apply anyone, from students to retired individuals. ​Computer programming allows students

who are looking for a job in the field to explore their creative interests. The overall impact of

computer programming ​it focuses more on logic-based foundational skills than on the

ever-developing array of programming tools (Wen).

Data Collection

An experiment was the most appropriate form of data collection because there is a variety

of programming applications that are free to be tested with and are accessible to most people.

The rationale behind the research being conducted is to contribute to the field of computer

science by creating an interest for the field for students who are beginning to learn how to

program. Many people who find an interest are not persistent and abandon the field completely
Konduru 9

before understanding all the characteristics, so this research will present the audience with

information that will help make it easier to understand programming languages and debugging

methods.

Scale Used to Evaluate the Applications:

Rating 5:

- Run time was 10 seconds or less

- At least 90% of the errors were caught

- Gave very descriptive feedback and showed the user how to fix the error

Rating 4:

- Run time was 10 to 20 seconds

- At least 75% of the errors were caught

- Gave descriptive feedback and explained the error extensively

Rating 3:

- Run time was 20 to 30 seconds

- At least 50% of the errors were caught

- Gave feedback and highlighted or emphasized on errors

Rating 2:

- Run time was between 30 to 40 seconds

- At least 40% of the errors were caught

- Pointed out the errors but didn’t give any feedback

Rating 1:

- Run time was between 40 to 50 seconds


Konduru 10

- At least 25% of the errors were caught

- Errors were present, but the program didn’t explain them or highlight them

Rating 0:

- Run time was above 50 seconds

- No errors were caught

- No feedback given on errors

Data:

GNAT
Programming
Code::Blocks Studio CodeLite
Trial-1:
Rolling Dice 4 2 4
Trial-2:
Rolling Dice 3 1 3
Trial-3:
Rolling Dice 3 1 4
Trial-1:
Tic-Tac-Toe 3 5 5
Trial-2:
Tic-Tac-Toe 2 3 5
Trial-3:
Tic-Tac-Toe 3 3 5
Trial-1:
Rock-Paper-S
cissors 1 4 3
Trial-1:
Rock-Paper-S
cissors 3 5 4
Konduru 11

Trial-1:
Rock-Paper-S
cissors 2 4 5

JDK (Java
Development
Kit) Eclipse JUnit
Trial-1:
Rolling Dice 3 3 2
Trial-2:
Rolling Dice 2 3 1
Trial-3:
Rolling Dice 3 3 3
Trial-1:
Tic-Tac-Toe 2 5 4
Trial-2:
Tic-Tac-Toe 2 3 4
Trial-3:
Tic-Tac-Toe 2 2 3
Trial-1:
Rock-Paper-S
cissors 4 1 2
Trial-1:
Rock-Paper-S
cissors 1 5 5
Trial-1:
Rock-Paper-S
cissors 3 4 5
Konduru 12

Eclipse with
PyCharm Eric PyDev
Trial-1:
Rolling Dice 4 3 5
Trial-2:
Rolling Dice 4 5 4
Trial-3:
Rolling Dice 3 5 3
Trial-1:
Tic-Tac-Toe 4 4 5
Trial-2:
Tic-Tac-Toe 4 4 5
Trial-3:
Tic-Tac-Toe 4 4 4
Trial-1:
Rock-Paper-S
cissors 5 4 5
Trial-1:
Rock-Paper-S
cissors 4 3 4
Trial-1:
Rock-Paper-S
cissors 4 2 4
Konduru 13
Konduru 14

Interpretation, Results, and Analysis

The data shows the relations and trends throughout the evaluation process. Each excerpt

of code has logical and semantic errors that the application should be able to identify. The scale

created measured all aspects needed to debug a program well. Overall, the language that was

proven to be most user-friendly and debugged the program excerpts the best was Python. Python

is usually referred to as one of few languages out there that is both easy to get started with for

beginners yet incredibly powerful when beginners improve and begin to working on real-world

projects. The programming applications as a whole, within Python, had ratings mostly of 4’s and

5’s with some 3’s. In terms of consistency no matter the complexity of the program, Python
Konduru 15

maintained the same rating. That means that even when doing complicated programs later on that

Python would still use its user-friendly and extensively detailed debugging methods to help the

programmer. The specific applications of Python all were on the same level as each other.

Eclipse with PyDev had a slight edge in rating than the other applications. This is mainly

because of its extensive features. Such as code completion, integration of Python debugging,

addition of a token browser, refactoring tools, and much more. Those features usually help more

advanced Python programmers. Eric was also a helpful application but had a longer run time

compared to the other application, but in that time it collected more errors. However, some

criticisms of Eric are that it’s long run time becomes a problem when running large excerpts of

code. PyCharm is a mixture of the other two Python applications. It’s relatively fast run time

makes up for the errors missed. Also the feedback given is extremely helpful because it

highlights the error, explains what went wrong and tells the user how to fix it.

The second most helpful applications to use are the ones in Java. Java may seem

complicated at first because of the error messages, but after coding more they become easier

understand. JDK and JUnit earned higher ratings than Eclipse, but Eclipse remained consistent

even though the excerpts of code became more complicated. JUnit earned a higher rating as the

code became more complex, which shows that when programming something advanced and

larger that JUnit is the best. JUnit can test one block of code at a time rather than waiting for the

entire program to be completed before you run a test. You can actually test and then code,

meaning there is very little doubt about the final functionality of an program. JDK’s rating

decreased as the complexity increased. So starting out with JDK would probably be the best

experience because it includes the necessary Java Compiler, the Java Runtime Environment, and
Konduru 16

the Java APIs. Basically meaning everything is up to date all the time and gives the user a proper

user friendly experience. However, the consistency of Eclipse puts it ahead of the other Java

applications. It got close to the same rating no matter the complexity. Having consistency is most

important when learning programming and eventually coding more advanced programs. Java

provides much needed assistance for code completion, refactoring and syntax checking. It also

offers something called the Java Development Tools project, which provides a range of tool

plugin-ins to help develop all kinds of Java applications.

The worst language to begin programming in is C++. Unless this is a profession, C++

still remains as one of the hardest programming languages to fully understand. That’s why all the

C++ applications had various ratings as the complexity increased. GNAT and Code::Blocks

reamined equal and had similar ratings in each complexity. GNAT highlights syntax and has an

incredibly fast run time, but not all the errors are caught. Code::Blocks is opposite to GNAT

programming, but the error messages of it has little to no description of the error itself and how

to fix it. CodeLite was the best because it performs well when iterating complex programs. Due

to the fact that it displays errors in an organized, descriptive glossary and also used code

navigation which helps beginners understand where to place what and why. Throughout every

application in any programming language, consistency has proven to be the main key when

learning new programming skills. Finding errors, giving feedback on errors and measuring run

time are all characteristics of debugging programs. Beginners should remain persistent when

learning how to program because of the various obstacles and rules that must be learned.

Overall, the experiment was the best way for the researcher to answer the question. The

access to all the programming tools and background knowledge in computational skills allowed
Konduru 17

this to occur. This project teached programmers the main characteristics and ideas to understand

in order to begin computer programming. It explains good examples of where to begin, such as

Eclipse, which is well-known due to its consistency when iterating the code of beginners. BAd

examples of a starting point were also shared. Such as C++ because the complexity and

perception of the programming language itself often makes beginners confused and causes

computer programming to be viewed as boring and difficult. THe impact to society gained from

this experiment is a place to start for people who have an interest in computational skills and

want to pursue this interest. This paper will provide them with traits and qualities of each

programming tool and they themselves can use the scale given to evaluate their experience or use

the observations gathered throughout the experiment.

Conclusions

Computer Programming as a whole is a field that students should start taking part in because it is

the future. However, the best language to start with is Python. Python applications advocate for

beginners and proficient learners. And with the new wave of students wanting to learn computer

science and computational skills Python has gained in popularity and effectiveness when

compared to other program languages (Perkel). C++ is complex and can be difficult to learn atan

early level of beginning to program (Becker). Java has always been the go-to language for

software developers to use because it accomplishes the complex computational tasks with

simplicity (Perry). In order for the complex tasks to be solved with simplicity, the beginners

must understand them. That’s why Java can be difficult at times. The main characteristic when

beginning to program is consistency. It's important that beginners choose a language and
Konduru 18

application that maintains the consistency in the program. This way all the basics and roots of

computer programming are understood.


Konduru 19

References

Ars Technica. What's the right balance between code consistency and code improvement? (2013,
June 01). Retrieved March 20, 2018, from
https://arstechnica.com/information-technology/2013/06/whats-the-right-balance-betwee
n-code-consistency-and-code-improvement/

Becker, T. (2013, August 11). C and the Culture of Complexity. Retrieved February 24,
2018, from
http://blog.greaterthanzero.com/post/58482859780/c-and-the-culture-of-complexity

Best Programming Language For Me in 2016. (2016, January 6). Retrieved March 14, 2018,
from ​http://www.bestprogramminglanguagefor.me/why-learn-java

Brown, T. B. (2013, January 24). Modern Debugging Tips and Tricks. Retrieved March 3, 2018,
from ​https://alistapart.com/article/modern-debugging-tips-and-tricks

Cardoza, C. (2017, July 17). The Python programming language grows in popularity. Retrieved
March 17, 2018, from
https://sdtimes.com/artificial-intelligence/python-programming-language-grows-popularit
y/

Cellania, M. (2015, October 13). Ada Lovelace: The First Computer Programmer. Retrieved
March 20, 2018, from
http://mentalfloss.com/article/53131/ada-lovelace-first-computer-programmer

Dimick, C. (2010, July 13). Achieving Coding Consistency. Retrieved March 17, 2018, from
http://library.ahima.org/doc?oid=101092#.Wq2X9WaZOu4

Farmer, J. Teaching Novice Programmers How to Debug Their Code. Retrieved November 13,
2017. ​CodeUnion Blog RSS​,
blog.codeunion.io/2014/09/03/teaching-novices-how-to-debug-code/

Heggart, K. (2014, June 16). Coded for Success: The Benefits of Learning to Program. Retrieved
March 17, 2018, from
https://www.edutopia.org/discussion/coded-success-benefits-learning-program

Learn C Programming. (n.d.). Retrieved March 17, 2018, from


https://www.programiz.com/cpp-programming
Perkel, J. M. (June 2015). Pick up python: a powerful programming language with huge
community support. Retrieved February 12, 2018. ​Nature​, vol. 518, no. 7537, 2015, p.
Konduru 20

125+. ​Science In Context​,


http://link.galegroup.com/apps/doc/A400530231/GPS?u=glen20233&sid=GPS&xid=639

Perry, J Steven. (July 19, 2011). Figure 2f from: Irimia R, Gottschling M (2016) Taxonomic
revision of Rochefortia Sw. (Ehretiaceae, Boraginales). Retrieved February 1, 2018.
Biodiversity Data Journal 4: e7720.​ ​https://Doi.org/10.3897/BDJ.4.e7720​. ​Java
Language Basics.

Raik-Allen, S. (2013, January 10). A brief history of computer programming languages. Which
do you use? Retrieved March 18, 2018, from
http://www.abc.net.au/technology/articles/2013/01/11/3667939.htm

Wen, M. (2013, November 15). Computer Science: an ever-evolving discipline. Retrieved March
17, 2018, from
http://www.dailycal.org/2013/11/14/computer-science-an-ever-evolving-discipline/

Werell, B. (2017, February 02). Discover the History of Coding for Computer Science Week.
Retrieved March 18, 2018, from
http://blog.connectionsacademy.com/discover-the-history-of-coding-for-computer-scienc
e-week/

Whyte, S. (2013, February) Learning & Leading with Technology. Retrieved April 1, 2018, from
htp://www.iste.org?learn /publications/learning-leading

Anda mungkin juga menyukai