<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Is C a vitamin?</title>
	<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/</link>
	<description></description>
	<pubDate>Tue, 06 Jan 2009 02:22:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1</generator>

	<item>
		<title>By: emreknlk</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-2</link>
		<author>emreknlk</author>
		<pubDate>Wed, 14 Feb 2007 22:30:12 +0000</pubDate>
		<guid>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-2</guid>
					<description>Hi Özgür,
Your critisism to the C programming language makes me very angry :) Now i defend it with robust proofs.

Firstly, readibility in C is more difficult than object oriented programming languages. It is true but you should compare C's readibility with a procedural language. Python is an OO language and everybody accepts that fact OO languages are more readible than procedural languages. Sometimes you couldnt escape from using a procedural language because of performance issues. At this time you will see that C is the best readible when you really learn to use it.


Secondly, orthogonality is wanted because it makes the programmer's job easier. However, the example you gave is a little  strange, isnt it? Look at first example, you double only one variable which is an integer. Look at the second example, you  double an array of chars! They are not the same. In the first one your tendency is increasing the memory locations content while in the second increasing the memory length with double! So it  can not be a criterion for determining the C's orthogonality.

Another issue you mention is safety. If the language makes all boundary controls, memory managements then this language will be slow like java :) My attitude is that C is as safety as another programming language. However if the programmer doesnt care about security issues C may be becomes  a kamikaze. I think it is not right to assign the results of programmers faults to a programming language!

Redundancy is the problem of all languages which live for long time. Deprecated functions also exist in Java and another languages. Saying the same thing in many ways proves the flexibility of a language. It is an art.

In reaching elements part, you explain the goto statement. It is not required to use all the features of a programming language. If it is really required you can use goto, it is a tool in your toolbox but we generally prefer break and continue keywords in loops. Have you ever used the "auto" keyword? Most of the programmer doesnt know about it, but it exists in our toolbox, use it if you like!

You say;"There is no exception handling mechanism in C." Lets examine first what is exception handling? When you take the code inside a try block and catch the throwing exception you can handle it inside the catch block. The same thing can be done in C. Look at this code:

function( input1 , input2 , &#38;errorCode );

After returning this function call, you know about the status of system. You can look the errorCode variable, say if it is 0, the function is successfully executed. You can construct your own handler by this way. It just require a little much design.

Finally, 5[var] is same with var[5], because it is a simple mathematic that adding 5 with var, which is an address of the array, and adding var with 5 produce the same result.  For more information look at http://emreknlk.blogspot.com/2007/02/advanced-pointer-operations-in-c.html  :)

So my conclusion is; use C if you want to feel like a programmer, use orange juice if you want to take some vitamin!</description>
		<content:encoded><![CDATA[<p>Hi Özgür,<br />
Your critisism to the C programming language makes me very angry :) Now i defend it with robust proofs.</p>
<p>Firstly, readibility in C is more difficult than object oriented programming languages. It is true but you should compare C&#8217;s readibility with a procedural language. Python is an OO language and everybody accepts that fact OO languages are more readible than procedural languages. Sometimes you couldnt escape from using a procedural language because of performance issues. At this time you will see that C is the best readible when you really learn to use it.</p>
<p>Secondly, orthogonality is wanted because it makes the programmer&#8217;s job easier. However, the example you gave is a little  strange, isnt it? Look at first example, you double only one variable which is an integer. Look at the second example, you  double an array of chars! They are not the same. In the first one your tendency is increasing the memory locations content while in the second increasing the memory length with double! So it  can not be a criterion for determining the C&#8217;s orthogonality.</p>
<p>Another issue you mention is safety. If the language makes all boundary controls, memory managements then this language will be slow like java :) My attitude is that C is as safety as another programming language. However if the programmer doesnt care about security issues C may be becomes  a kamikaze. I think it is not right to assign the results of programmers faults to a programming language!</p>
<p>Redundancy is the problem of all languages which live for long time. Deprecated functions also exist in Java and another languages. Saying the same thing in many ways proves the flexibility of a language. It is an art.</p>
<p>In reaching elements part, you explain the goto statement. It is not required to use all the features of a programming language. If it is really required you can use goto, it is a tool in your toolbox but we generally prefer break and continue keywords in loops. Have you ever used the &#8220;auto&#8221; keyword? Most of the programmer doesnt know about it, but it exists in our toolbox, use it if you like!</p>
<p>You say;&#8221;There is no exception handling mechanism in C.&#8221; Lets examine first what is exception handling? When you take the code inside a try block and catch the throwing exception you can handle it inside the catch block. The same thing can be done in C. Look at this code:</p>
<p>function( input1 , input2 , &amp;errorCode );</p>
<p>After returning this function call, you know about the status of system. You can look the errorCode variable, say if it is 0, the function is successfully executed. You can construct your own handler by this way. It just require a little much design.</p>
<p>Finally, 5[var] is same with var[5], because it is a simple mathematic that adding 5 with var, which is an address of the array, and adding var with 5 produce the same result.  For more information look at <a href="http://emreknlk.blogspot.com/2007/02/advanced-pointer-operations-in-c.html" rel="nofollow">http://emreknlk.blogspot.com/2007/02/advanced-pointer-operations-in-c.html</a>  :)</p>
<p>So my conclusion is; use C if you want to feel like a programmer, use orange juice if you want to take some vitamin!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: veridicus</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-3</link>
		<author>veridicus</author>
		<pubDate>Wed, 14 Feb 2007 22:30:26 +0000</pubDate>
		<guid>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-3</guid>
					<description>On the other hand, using C as a learning language forces students to learn some very important lessons, such as memory management.  Often people who learn first with higher-level languages are terrible at certain details, such as performance and memory consumption.  Personally I found it best to learn computer science from the ground up.  Even though I don't ever program in assembler it was very educational and helped build a strong foundation.</description>
		<content:encoded><![CDATA[<p>On the other hand, using C as a learning language forces students to learn some very important lessons, such as memory management.  Often people who learn first with higher-level languages are terrible at certain details, such as performance and memory consumption.  Personally I found it best to learn computer science from the ground up.  Even though I don&#8217;t ever program in assembler it was very educational and helped build a strong foundation.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Özgür Macit</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-4</link>
		<author>Özgür Macit</author>
		<pubDate>Fri, 16 Feb 2007 09:26:06 +0000</pubDate>
		<guid>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-4</guid>
					<description>emreknlk,

I must first say that my article was not about what a bad language C is - I am just againist programming language fanaticism.
My article does not tell anything about how readible object-oriented languages (or Python) is, I am talking about C and how difficult to read (and write) C code is. You are forced to write (and read) a very big amount of irrelevant code while coding in C language. Thus, C is not proper for implementing high-level and &lt;em&gt;non-performance-seeking&lt;/em&gt; problems.
I cannot understand what you say about orthogonality. What I must see from an orthogonal programming language is that it must take care of whether my variable is an array or an integer - I don't want to deal with how it is located in the memory. Just remember I assumed that I am writing a high-level program that is not related directly (for example a device driver) or indirectly (any performance-critical application) with computer hardware.
The right thing to say about C's safety issues is (or in general about C), I think, it is related with problem you have to solve. Do you need good performance? Do you need a bug-free software? Don't you want to take care of all &lt;em&gt;machine-related&lt;/em&gt; things? Don't you want your code include &lt;code&gt;if&lt;/code&gt;s here and &lt;code&gt;if&lt;/code&gt;s there to catch any error that may occur?
Your way about exception handling is nice - it is really. But you know -like I know- that exception handling is something very different. I don't expect from C to have an exception handling mechanism as a low-level language, I am just trying to say it is not a handy language for high-level programming. No need to say you can do nearly everything in C by yourself. You are familiar with &lt;em&gt;do it yourself approach&lt;/em&gt; as I know :)
So my conclusion is, again, use C where you &lt;em&gt;really&lt;/em&gt; need it, but no more than this.</description>
		<content:encoded><![CDATA[<p>emreknlk,</p>
<p>I must first say that my article was not about what a bad language C is - I am just againist programming language fanaticism.<br />
My article does not tell anything about how readible object-oriented languages (or Python) is, I am talking about C and how difficult to read (and write) C code is. You are forced to write (and read) a very big amount of irrelevant code while coding in C language. Thus, C is not proper for implementing high-level and <em>non-performance-seeking</em> problems.<br />
I cannot understand what you say about orthogonality. What I must see from an orthogonal programming language is that it must take care of whether my variable is an array or an integer - I don&#8217;t want to deal with how it is located in the memory. Just remember I assumed that I am writing a high-level program that is not related directly (for example a device driver) or indirectly (any performance-critical application) with computer hardware.<br />
The right thing to say about C&#8217;s safety issues is (or in general about C), I think, it is related with problem you have to solve. Do you need good performance? Do you need a bug-free software? Don&#8217;t you want to take care of all <em>machine-related</em> things? Don&#8217;t you want your code include <code>if</code>s here and <code>if</code>s there to catch any error that may occur?<br />
Your way about exception handling is nice - it is really. But you know -like I know- that exception handling is something very different. I don&#8217;t expect from C to have an exception handling mechanism as a low-level language, I am just trying to say it is not a handy language for high-level programming. No need to say you can do nearly everything in C by yourself. You are familiar with <em>do it yourself approach</em> as I know :)<br />
So my conclusion is, again, use C where you <em>really</em> need it, but no more than this.</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Atilla Filiz</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-5</link>
		<author>Atilla Filiz</author>
		<pubDate>Sat, 17 Feb 2007 19:53:35 +0000</pubDate>
		<guid>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-5</guid>
					<description>C Forever!!!</description>
		<content:encoded><![CDATA[<p>C Forever!!!</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: Osman</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-7</link>
		<author>Osman</author>
		<pubDate>Fri, 23 Mar 2007 12:19:01 +0000</pubDate>
		<guid>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-7</guid>
					<description>Hocam Unit Testing miş 
C imiş
Vitamin miş
hepsi hikaye
Site super olmuş :)
Eline Sağlık</description>
		<content:encoded><![CDATA[<p>Hocam Unit Testing miş<br />
C imiş<br />
Vitamin miş<br />
hepsi hikaye<br />
Site super olmuş :)<br />
Eline Sağlık</p>
]]></content:encoded>
				</item>
	<item>
		<title>By: bir_dost</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-48</link>
		<author>bir_dost</author>
		<pubDate>Wed, 08 Aug 2007 19:17:16 +0000</pubDate>
		<guid>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comment-48</guid>
					<description>C gerçekten ilk öğrenilmesi gereken bir dil çünkü yazılımcı detaylarda nelerin saklı olduğunu görüyor. gidip ilk önce java öğretirsen ne pointer mantığını ne dynamic memory management mantığını ne compile-link-load cycleını adam gibi kavrayabilir. önemli olan doğru dili doğru amaçla doğru yerde kullanmaktır. Bunun için mesela java JNI (java native interface) ile C fonksiyonlarınızı java kodunuzdan çağırmanıza izin verir. Ama mesela gidip de C ile bir distributed enterprise uygulama yazamazsınız ille ki daha high level bir dil kullanmanız gerekir. benzer şekilde de bir driver yazarken de daha düşük düzeyli bir dil kullnmak mantıklıdır...</description>
		<content:encoded><![CDATA[<p>C gerçekten ilk öğrenilmesi gereken bir dil çünkü yazılımcı detaylarda nelerin saklı olduğunu görüyor. gidip ilk önce java öğretirsen ne pointer mantığını ne dynamic memory management mantığını ne compile-link-load cycleını adam gibi kavrayabilir. önemli olan doğru dili doğru amaçla doğru yerde kullanmaktır. Bunun için mesela java JNI (java native interface) ile C fonksiyonlarınızı java kodunuzdan çağırmanıza izin verir. Ama mesela gidip de C ile bir distributed enterprise uygulama yazamazsınız ille ki daha high level bir dil kullanmanız gerekir. benzer şekilde de bir driver yazarken de daha düşük düzeyli bir dil kullnmak mantıklıdır&#8230;</p>
]]></content:encoded>
				</item>
</channel>
</rss>
