next up previous contents
Next: Memory Management Up: General, conceptual, differences Previous: Safety   Contents

Level of abstraction

Gont is much higher level. It generally operates at much higher level of abstraction.

<evangelisation>

[...] And, actually, the more you can avoid programming in C the more productive you will be.

C is very efficient, and very sparing of your machine's resources. Unfortunately, C gets that efficiency by requiring you to do a lot of low-level management of resources (like memory) by hand. All that low-level code is complex and bug-prone, and will soak up huge amounts of your time on debugging. With today's machines as powerful as they are, this is usually a bad tradeoff - it's smarter to use a language that uses the machine's time less efficiently, but your time much more efficiently. Thus, Python.

Eric S. Raymond

This is quotation from hacker howto by ESR :-). One may easily note that it does not only talk about Python (personally I don't like dynamic typing nor using interpreted language as a general purpose, -mal).

C is, in principle, assembly language, therefore it is almost as fast as real assembly, but is still easy to write and quite portable. It is great for programming things like kernels, libraries that need high speed operation (like MPEG decoding/encoding), generally most of things that need to be real time. However it is very easy to cut your finger with such a sharp knife. Typesystem provided by C isn't very powerful, most of people familiar with functional programming, would say that typesystem of C is no more then a toy. Similarly C doesn't provide much support for memory management, exceptions, functional and objective programming. Of course, lack of restriction from language about how you organize your memory management, objects, and error recovery, can be advantage, especially with respect to operating system programming and so on. However in most cases, writing xmalloc() 100th time, is annoying. I think that's the main reason why Java is so popular - it takes burden of thinking at the very low level away from the programmer, and also it is much harder to make a mistake (at the cost of more typing, and performance regression).

</evangelisation>.


next up previous contents
Next: Memory Management Up: General, conceptual, differences Previous: Safety   Contents
2002-01-28