[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: is it possible to install a desktop-manager without python and perl?



2009/6/23 明覺 <shi.minjue@gmail.com>:
> 2009/6/23 Jeff Soules <soules@gmail.com>:
> A very good comparison -- human languages and programming languages.
> Then why we must have an official world language - English? What's the
> official language in the programming world? If you say you do not need
> an official programming language, then you are saying "we do not need
> English to be the world official language", I believe no one will
> agree with you; if you say every programmer should learn many
> languages, then you are saying "everyone should learn English,
> Chinese, French....", oh, I believe everyone will hate you so much, I
> guess you are also a chinese, you should know how suffering we chinese
> have to learn English.

Each (natural) language does things differently.  Something very
important would be lost if we did away with the differences.
It's the same with programming languages--different languages exist
for a reason, and while it's theoretically possible to do anything in
any language, some languages are better than others for some tasks.
Haiku in English usually sound silly; an install script in Assembly
would be silly too.  You really can't write a play in heroic
alexandrine couplets in Chinese; just the same, there are probably
better language choices than tcl to write real-time financial data
analysis software.

I do not think we need an official world language.  I think that if
you want to access Du Fu, Li Bai, Zhuangzi, you will need to learn
Chinese; if you want to read Milton, Shakespeare, the Constitution,
you'll need to learn English; if you want Apollinaire, Hugo, Rostand,
you'll need to learn French.  But not everybody needs access to all
those things; and there are "compatibility layers" (in the form of
translations) available for people who don't need direct access.
People need to learn the languages that let them easily do the things
they want to do, whether that's parse a text file or read Homer.

What makes a natural language valuable is not just the sounds and the
grammar, but the entire body of work that exists in the language.
Consider Perl vs. C.  Perl doesn't really "add new concepts" to C --
they're both procedural, you can achieve the same goals in each.  Part
of what makes Perl valuable is CPAN -- an enormous body of Perl code
that exists to solve thousands of problems that other people have
already had, and for which Perl users have written reusable solutions.
 It's not complete, and there are times when it's worthwhile to
re-invent the wheel; but incorporating Perl syntax into C would not
give you access to the best part of Perl.  For that, you'd have to
port all of CPAN.  To incorporate the best part of Chinese into
English, you need more than pinyin and tone markings; you would need
to translate Confucius, Mencius, Laozi, Han Fei, Shijing, Daozang,
Shiji......  which has been done, but people who really want to
understand still have to learn Chinese!

> I value every good concept in every language, but please add that good
> concept to my familiar language, not force me to learn a new one; or,
> I can reference another language so that I can improve my language,
> but please do not force me to use a new one.

What would it mean?  A big part of the advantage of Perl, like I said,
isn't new ideas or concepts.  Perl has more compressed syntax, and
easier access to built-in functionality, like integrated hashes and
regular expressions.  They aren't *new*, you can do them in C, but it
takes work.  To include Perl's *advantage* into C, you would either
have to extend the C syntax, or rewrite your C compiler to understand
Perl.  To use it, you would have to learn either the new syntax, or
learn actual Perl!  In just the same way, you can write in English
letters, "Wu2 sheng1 ye3 you3 ya2, er3 zhi1 ye3 wu2 ya2.  Yi3 you3 ya2
sui2 wu2 ya2, dai4 yi3; yi3 er3 wei2 zhi1 zhe3, dai4 er2 yi3 yi3!"
But to understand it (much less appreciate it) you'd need to actually
learn classical Chinese.  You can rewrite it in English (it means
something sort of like "My life has a limit, but knowledge has no
limit.  To use that which has a limit to pursue that which has no
limit, is a disaster; to think it has [all] been learned, is still a
disaster!"), but it just isn't possible to take the best part of the
language and graft it onto English.  Even if you could, you'd be
creating a specialized part of the language that requires specialized
vocabulary and grammar.  And the result wouldn't be familiar to
everyone, and would definitely NOT be ANSI C.

> there isn't any difficulties to implement a good concept
> in one language to another.

To implement, no.  To take advantage of, yes.

> The problem is, if everyone of us use a different language, we cannot
> cooperate, so we must have an official language, and everyone learn
> and use it from the start to end.

People have been cooperating (or not) without a universal language for
a very long time.  The English and the Russians cooperated against
Germany in World War II, and they don't even have the same alphabet.
Cooperation or non-cooperation depends on goals; language is only the
smallest part.  In programming, the issue is whether people are
solving the same problems in ways that are general enough to be
reusable.  Integrating code and libraries written in different
languages is an annoyance, perhaps, but not the most important one.

> but in my career life, I saw so much overlapping work done because
> different languages, I used to be a web programmer, javascript, xslt,
> C#, we programmed so many same functions with different languages.
> It's painful, cann't you see it? It's beause we are on the wrong way!

After saying this, you'd still write your own web browser in C++, just
so that you can have one that's written in C++?
No one likes to see needless repetition of effort.  But this is a
project management issue, not a language issue.  If these were
different firms or employers in the closed-source world, then of
course they wouldn't have access to each others' code; if they were
the same employer, then the employer should've made up his mind about
the project tools, and allocated functionality to the right functional
units, etc.  A project whose leadership would try to use javascript,
xslt, and C# to do the same thing--that'd be a nightmare, even if the
project is coded in $deity's own pure programming language.


> I want to integrate perl into C/C++.

Then, again, you'll have to learn Perl anyway.  The advantage is
inseparable from the language.


>> You keep coming back to this argument that "I hope one day I will be
>> able to take full control of my system, and modify [it] as i like."
>> An admirable goal -- but what does it actually *mean*?  What are you
>> going to do with this system?  You're going to give up most of the
>> functionality of a good Linux distro so you can...  mess around with
>> the way your personal hardware handles filesystem journaling, or
>> memory allocation, or something?  That's really the most interesting
>> problem you can think of solving with computers?
> Yes, I myself won't be able to do all the work, but if there are many
> people agree with me, and we work together to realize an only one
> programming language system, that will be a bright future of our free
> software world.

I'm still not understanding.  I get that this is a big undertaking,
but what do you hope to achieve by having the entire system be in the
same language?  The concepts behind, say, device drivers, rdbms, and
installer scripts are not all the same, whether they're all written in
Perl, C, or Fortran; and no one actually has the time to read,
understand, and change each of the millions of lines of code in
Debian.  Even if your whole system were written in C, it would take a
lifetime to read all the code, so you still wouldn't fully understand
every component...
If the goal is a pure-c system, you could achieve that by just not
installing anything that isn't in C.  I don't know what you would do
with it, though.
If your goal is to have reading knowledge and the ability to modify
all of a modern system like Debian, you'll get there faster by
learning Perl and Python than you would by re-coding everything in
C...

Regards,
Jeff


Reply to: