Monday, March 6, 2006

Dark Brown/black Stool

webmaster has to study a computer? Languages \u200b\u200b

What do computer engineers to study? It is curious that a widespread profession with degrees in almost all universities in the world has so little unclear what their engineers have to study.

Introduction This article does not necessarily address issues that relate to information technology as such, want to go into another area that worries me and that is none other than training and, within it, the area I know best The computer training. Once

written this article, I will complete this introduction to indicate that basically did try the usual topics, primarily because the training of IT professionals is closely related to the state of computing and especially its future.

What is taught in computer science? Early plans

study computer engineering were heavily influenced by the source of most of their teachers. In some faculties the teachers came mainly from areas of engineering, telecommunications engineering and industrial engineering-mostly schools and other areas of science, mathematics and physics mainly. The titles first official "Graduate / Diploma in Computer Science" seems to be opting for this second stream, while the current "Engineers / Computer Engineers" seems to be closer to the first.

This difference of cultures led to the clash between two different conceptions of curricula in computer science. The first with more emphasis on applied subjects such as operating systems, computer networks, software engineering, etc. The latter with more weight on the baseline survey, a majority of subjects as calculus, algebra, discrete mathematics, automata theory, etc. The result end of the course curriculum combines both views by law, although the balance of power at each college determine the bias of each plan.

What programming language?

Another typical problem when implementing a computer science curriculum is to choose which language or programming languages \u200b\u200bused. It seems reasonable that this decision is made primarily for educational reasons, but many other factors affect and have affected the decision.

For some time many universities used to teach Pascal as programming language. In other subjects, typically related to operating systems, C was used as the most used in the implementation of operating systems, teachers of subjects preferred real time control or Ada, etc. These approaches were criticized from the industry for being far from market realities. It is very important to learn COBOL cried for 15 or 20 years ...

In my view, the industry seems unaware that lag behind the university and not in front on these issues (contrary to what they believe). I mean, some years ago for many people in the industry to the university explaining things useless when not teaching COBOL. Interestingly, as students universities learned other things, in particular C, when they reached the industry began using what they knew best. So, they made use of C, for example, even for business management programs, for which he is not especially gifted.

Today the situation is similar. Now from the industry claims, for example, that use Java as a programming language. Rather, it asks to be taught Java and its implementations of all core technologies and little else. I know that for many the idea of \u200b\u200ban interpreted language with strong connections to the network may seem new, but the truth is that many things were similar and better before Java was just lucky to be born into the arms of a multinational.

new factor: the industry

also adds a new factor, the industry has grown and now there are very powerful players: Microsoft, SUN, etc. who understand what future engineers will learn a huge factor in what will be used in enterprises in the years ahead. Hence, many companies make great efforts to place their products in universities. Microsoft

advantage of its popular operating systems for desktop computers, which are mainly equipped classrooms that practice mainly for price reasons universities. Until very recently it was difficult to find compatible computer rooms were not operating systems from Microsoft. The resistance has been strong to the appearance of classrooms with GNU / Linux or other free operating systems. Multinational companies have created software licenses campus to try to persuade universities to use. Have made donations software with the same idea.

My basic question is: Should I force the administration to use technology neutral, ie free teaching in information technology? In my opinion yes, for two reasons. The first least: by price. The campus licenses are very cheap compared to individual prices, but still must be paid and donations are only produced the limited subset of very prestigious universities with the idea that it leads to others.

The second is the most important from my point of view, government should force the use of proprietary technologies for not cooperating in the maintenance of monopolies in any area of \u200b\u200bthese technologies. OK to use as Java, or the only operating systems that students see are the Microsoft Windows family, it seems dangerous from the point of view.

Curiously, for someone who has championed more engineering aspect of computing, are the sectors more supportive of strong mathematical background who most understand the need to use proprietary technologies. Perhaps the non-patentability of mathematics has led that community to develop more open than that of the supposedly more dynamic engineering. Professional ethics

Another point of interest in computer training, and that often leaves aside, it is training on the computer as a branch of knowledge and social components. The delivery of such knowledge is usually done alrededor de la asignatura de deontología profesional. Esto no es exclusivo de la informática, casi todas las titulaciones universitarias imponen ciertos créditos
obligatorios de deontología profesional.


Las asignaturas sobre deontología en informática tienen en mi opinión un perfil muy limitado, que reconozco sesgada por la implementación de las asignaturas que conozco. En general se centran en una única parte de los problemas a los que se enfrenta un informático en su vida profesional: el uso de información confidencial, bien de los usuarios de los servicios que desarrollan, de sus compañeros o de las empresas para las que trabajan. También abordan, como no podría ser menos, las prácticas ethics, such programs do not intentionally incorrect, you enter discussions on the need for professional or not (this would for another article), it comes to hiring practices and relationships with peers and competitors, and generally establishing the legal rights and duties of the computing profession.

However, in my opinion it is desirable to introduce students in other computer-related issues, but are more general. I think it's important to face the social problems of computing. In particular it seems essential to know the philosophy underlying the development model free software. It is unacceptable that most computing students leave the classroom thinking that the only way to develop software or developing it to make money is by selling proprietary licenses. It is necessary to address the analysis of software licenses, to consider its implications. Similarly

is necessary in the classroom to address the issues related to intellectual property, of which I think free software is a subset. The computer is now closely linked with the production and distribution of multimedia content. The computer is necessary to discuss and reason about the ways in which you will be making these functions and their social responsibilities.

professional practices of a computer should not be limited to its relationship with confidential information, privacy of data, etc. It is important to be aware of their role in the production chain with intellectual and knowledge to decide what kind of tools developed or used in their professional lives. The other computer

far I have used the computer training as a common thread of the article. I realize that the computing profession today is full of people from very diverse. Thus, besides engineers, There are engineers from other branches, licensed, etc. Yes, what was said about the use of free computer tools also applies to training.

subjects related to intellectual property management in general and the development model of free software in particular I think it should be mandatory in studies related to communication technologies and highly recommended (perhaps in the form of free subjects choice / configuration) in other degrees.

Another part of computer professionals are self-taught. They would recommend that, following his instincts, try to look beyond the tools fashionable shopping and bet on free software as a way of expertise.

Finally, as a teacher I can not stop the rest of the user without duties: it is worth to be simple users of GNU / Linux, you must understand, for example, what role does the GPL and the development model of free software in general. Slashdot

As always remains a good place to discuss these issues. So if you want to read more about these topics can intervene in many of the discussions held in this regard.

Excerpted and adapted for the community in general, the book "On Free Software" - http://gsyc.escet.urjc.es/ ~ grex / about-free / informaticos.html (C)

Monday, February 27, 2006

Counter Strike Source Launch Options Location

Compiled vs. Interpreted Languages: Procrastination, fad or trend.

The eternal battle near completion

Several readers of this blog I have questioned my position on languages \u200b\u200blike Java , Perl, PHP , Ruby, ASP , and the latest suite of Microsoft: Visual Studio.Net . Well, it's time to explain my position, which may offend many, perplexing to others and confuse the rest, well, some few people will agree with me.
In short, the key question is: what's better, the scripting language or compiled language? I'll summarize it in one sentence. All languages \u200b\u200bare interpreted.
I know that some (if not most) will say that this is not possible and therefore I will lift at that assertion.
To begin, we define each of the phrases from the standpoint of programming of PC's. Compiled Language

A compiled language is somewhat vague term to refer to a programming language that is typically implemented by a compiler. This means that once written the program, it translates from the source code through a compiler into an executable for a particular platform (eg for Sparc Solaris, Windows NT for Intel, etc.).. (Compiled Language - Wikipedia )

Language Interpreted ... An interpreted language is one in which the instructions are translated or interpreted them one at a time of execution to a machine language or intermediate language or through a virtual machine, typically being about 10 times slower than compiled programs. (Adapted from the definition on Wikipedia)

After the definitions, let's put in Christian terms, or better in computer terms, because not all Christians understand this terminology. A compiled language is that which, in theory, is translated into machine code and generated instructions are interpreted directly by the machine. And an interpreted language is one that is translated into an intermediate (read: non-machine), in which each instruction is interpreted and translated into machine language runtime. In practice, only and counted operating systems that run programs especially for console are in machine code. And before anyone misunderstand, I explain the above.
If we talk about the platform used in the home, understood Micro $ oft Windows, or as to the time of writing of this note, ALL, without exception, languages \u200b\u200bare interpreted or semi-interpreted. Those who know the assembly language the reason I find no problems. In modern operating systems, when you "compile" a program, it translates to a pseudoensamblador or pseudo-machine style, which in turn is interpreted by the "virtual machine" itself or native operating system to process , draw and perform all the instructions properly. Advanced programmers will know that when compiling programs, so you can find is a series of calls to external libraries which perform the tasks required. For UNIX operating systems and other, things do not change much, so do not I go into detail.
But now I go into the field. It is already clear that all programs are interpreted to a greater or lesser degree, the question is now how compilers generate code "more compiled" (forgive the apparent redundancy) than the others. Here I will mix a little personal concept with technical concept. To start I will be direct and mention some languages \u200b\u200bthat are generated, in theory, programs "more compiled" without mentioning the platforms to which they belong (I do miss some compiled languages, not currently used: Fortran, Ada, Algol, COBOL, and others of their time, except BASIC and derivatives):
C compiled language teacher par excellence, except in Visual Studio.Net. I only mention that it is the language in which they were designed the great majority, if not all, modern operating systems.
C + + Some would ponder, why separated C of C + +. Well, it happens that C + + is not compiled as C TAN, especially because almost always used in graphical operating systems, only in console versions is compiled into real machine code, but basically and essentially is compiled to machine code. Pascal
Basically, in all flavors and colors, compiled to native machine code
Delphi, Kylix, Lazarus are highly collected, but not entirely, because they are oriented graphical operating systems, and to a lesser degree are interpreted, but compiled languages \u200b\u200bare considered, because the generated code is native to the target platform.

I mention the best known and most widely used, now they are interpreted languages, which cause so much controversy. more interprestados
BASIC language interpreter par excellence and so far I have knowledge, the oldest, although it was interpreted in principles, then became the milestone of interpreted languages. All derivatives are more or less played, although sometimes, Borland released a compiled BASIC that, in theory (I never checked), to machine code.
JavaScript, VBScript Although this pair, I think that there are no mention of informing the general.
Perl, PHP These languages \u200b\u200bdesigned for web, are interpreted languages \u200b\u200bpar excellence, although intermediate code is compiled at runtime, which speeds up execution. There are also tools to generate close to the machine code for these two languages \u200b\u200band cached content, but ultimately, are still performed.
Batch, Shell Interpreted Languages \u200b\u200bfor OS 's, which is running quite slow, but they usually are so short or perform basic tasks such performance is not noticeable. Java
This language has been quite diversified today, including several of the large modern commercial applications are designed in this language, for example, Zend Studio and Oracle JDeveloper , just to mention two major .
Visual Studio. NET Boom imposition languages \u200b\u200bMicro $ oft. NO program built with the languages \u200b\u200bof the suite or whatever you want to call this package generates machine code and is in fact far from being machine code, or even references to libraries as they would other languages \u200b\u200blike Delphi, C + +, or similar. I'm not against this new methodology for the interpretation of software, but there is a big disadvantage is the very slow implementation of the generated programs and short words explain why (it could do a summary): The language generated is intermediate code which in turn is compiled in time execution, which is interpreted by the Framework. Net, which executes the instructions by the respective calls to operating system libraries. In my personal concept, it too turned to execute a simple instruction to call an OS API. Although the theory is that the compiled program after run-time, stay well, so it is an increase in execution speed, better than I had the opportunity to experience, as interpreted code run einterpretado code, I'm afraid not is very fast to say.

But why so much reluctance to these new technologies?, And what present pros and cons?. It's pretty simple. I'm not against these tercnologías, in fact, are excellent and sooner or later, but sooner or later, will build standards and will be considered as compiled languages.

Advantages of interpreted languages \u200b\u200b

  • Portability: This is the main advantage of this type of language because it can be compiled in and for any platform or operating system.
  • compatibility: as interpreted by the operating system, virtual machine or framework which ensures that the instructions are implemented by the software and hardware.

Disadvantages of interpreted languages \u200b\u200b

  • Speed: It is the most remarkable and which should be evaluated thoroughly to create software with such languages, because it must balance the portability with the speed that is being sacrificed. Unless the benefits of computer equipment are quite high, in which case, one might dismiss this aspect.
  • Portability: it is a disadvantage too. The problem is that today, so all compiled languages, are available for all platforms, so no virtual machines or frameworks, but in the case of Java, has done an excellent job for that matter and I can not complain, exists to almost all platforms, if not all, current. The. NET framework, I regret to say that today, one hundred percent is tested only on Windows, although there are promising projects such portability, but are not yet a fact.

In conclusion, how to act?. It is very difficult. Requirements are evaluated, defined needs, if they do not exceed the hardware to use, well you can continue, otherwise, it is best to think of a compiled language, as interpreted languages \u200b\u200byou require a large amount of resources, especially RAM and processor. Interpreted languages \u200b\u200bshould be exploited to the extent posiblem In a few years or even months and will enter into force (or are they?) the new standard of development.