like buffer overruns and the techniques to solve
them.
– C is also needed to read open source code like
Linux, Apache, TCP/IP protocol stacks, to le-
arn a wide variety of programming techniques.
4.2 Every Language Has Its Drawbacks
and Pitfalls
Another position of ours is as follows. As mentio-
ned in Sec. 2.1 and in (Koenig, 1989), C has some
drawbacks and pitfalls, but this cannot be a reason
to stop teaching C, since they are tightly coupled to
C’s advantages, and C is very required in upper-level
courses like embedded/system programming and ope-
rating systems.
Similarly, other languages have their draw-
backs and pitfalls, e.g., Java (Biddle and Tempero,
1998)(Daconta et al., 2003), Python (Miller and
Settle, 2016), JavaScript (Alimadadi, et al., 2016).
5 CONCLUSIONS
The C language is still one of the important program-
ming languages both in development and in educa-
tion, so there are several research studies to support C
programming educations to compensate the C’s draw-
backs and pitfalls. This position paper argued that the
C language is worth teaching even though C has the
drawbacks like buffer overruns and mysterious com-
piler error messages.
Our future work is to create a better C language
while preserving the C’s advantages. The languages
like C++, Java, Objective-C, C#, Go failed to be a
better C in our observation.
REFERENCES
Ritchie, D. (1993). The development of the C language.
2nd ACM SIGPLAN conf. on History of programming
languages (HOPL-II) pp.201-208.
Programming languages–C: ISO/IEC 9899:1990,
9899:1999, 9899:2011 (C90/C99/C11).
TIOBE programming community index. (2017).
http://www.tiobe.com/tiobe-index/, [Online; accessed
31-Jan-2017].
Gaspar, A., Boyer, N. and Ejnioui, A. (2007). Role of the C
language in current computing curricula part 1: survey
analysis. J. Comput. Sci. Coll. 23, 2, 120-127.
Gilberg, R. and Forouzan, B. (1996). Comparison of stu-
dent success in Pascal and C-language curriculums.
Proc. 27th SIGCSE tech. sympo. on Computer science
education (SIGCSE ’96) pp.252-255.
Hosch, F. (1996). Java as a first language: an evaluation.
SIGCSE Bull. 28, 3. pp.45-50.
King, K. (1997). The case for Java as a first language. Proc.
35th Annual Southeast Regional Conf. (ACM-SE 35).
pp.124-131.
Sanders, I. and Langford, S. (2008). Students’ percepti-
ons of python as a first programming language at wits.
SIGCSE Bull. 40, 3. pp.365-365.
Bates, B. (2004). C# as a first language: a comparison with
C++. J. Comput. Sci. Coll. 19, 3. pp.89-95.
Kaplan, R. (2010). Choosing a first programming language.
Proc. conf. on Information technology education (SI-
GITE ’10). pp.163-164.
Mannila, L. and Raadt, M. (2006). An objective comparison
of languages for teaching introductory programming.
Proc. 6th Baltic Sea conf. on Computing education re-
search: Koli Calling 2006. pp.32-37.
Bosse, Y. and Gerosa, M. (2017). Why is programming so
difficult to learn?: Patterns of Difficulties Related to
Programming Learning Mid-Stage. SIGSOFT Softw.
Eng. Notes 41, 6. pp.1-6.
Biddle, R. and Tempero, E. (1998). Java pitfalls for begin-
ners. SIGCSE Bull. 30, 2. pp.48-52.
Miller, C. and Settle, A. (2016). Some Trouble with Trans-
parency: An Analysis of Student Errors with Object-
oriented Python. Proc. ACM Conf. Int. Computing
Education Research (ICER ’16). pp.133-141.
Alimadadi, S. Mesbah, A. and Pattabiraman, K. (2016).
Understanding asynchronous interactions in full-stack
JavaScript. Proc. Int. Conf. on Software Engineering
(ICSE’16). pp.1169-1180.
Freund, S. N. and Roberts, E. S. (1996). Thetis: An ansi c
programming environment designed for introductory
use. In Proceedings of the Twenty-seventh SIGCSE
Technical Symposium on Computer Science Educa-
tion, SIGCSE ’96, pages 300–304, New York, NY,
USA. ACM.
Song, J. S., Hahn, S. H., Tak, K. Y., and Kim, J. H. (1997).
An intelligent tutoring system for introductory c lan-
guage course. Comput. Educ., 28(2):93–102.
Osuka, T., Kobayashi, T., Atsumi, N., Mase, J., Yama-
moto, S., Suzumura, N., and Agusa, K. (2012). CX-
checker: A flexibly customizable coding checker for
C. Journal of Information Processing Society of Ja-
pan, 53(2):590–600.
Kummerfeld, S. K. and Kay, J. (2003). The neglected battle
fields of syntax errors. In Proceedings of the Fifth Au-
stralasian Conference on Computing Education - Vo-
lume 20, ACE ’03, pages 105–111, Darlinghurst, Au-
stralia, Australia. Australian Computer Society, Inc.
Kojima, Y. Arahori, Y., Gondow, K. (2015). Investigating
the Difficulty of Commercial-level Compiler Warning
Messages for Novice Programmers. 7th Int. Conf.
on Computer Supported Education (CSEDU 2015).
pp.483–490.
Uchida, K. and Gondow, K. (2016). C-Helper: C Latent-
error Static/Heuristic Checker for Novice Program-
mers. 8th Int. Conf. on Computer Supported Educa-
tion (CSEDU 2016). pp.321–329.
Why Do We Need the C language in Programming Courses?
555