dotnet / csharplang

The official repo for the design of the C# programming language
11.1k stars 1.01k forks source link

你好,请创造中文版的C#语言,和.net上的语言 f# vb,请提供它们的中文版.让更多的人用母语实现快速编程,实现想法,创造更丰富的程序.这个行为实现的后果不管是对微软还是中国来说都是双赢. #993

Closed qwas982 closed 6 years ago

qwas982 commented 6 years ago

你好,请创造中文版的C#语言,和.net上的语言 f# vb,请提供它们的中文版.让更多的人用母语实现快速编程,实现想法,创造更丰富的程序.

实现全民编程的构想. 目前,想要掌握编程这项技能需要很高的学习成本和代价,编程还是少数人的专利,普通人或想要转业转行的人想要进入这一领域是一件艰难甚至不可达成的事,因为其代价和成本实在高昂. 那么,就因为如此,所以就要退缩和妥协吗? 不,我构想了新的道路.那就是-实现[中文编程],[汉语编程],编程主要的困难是英语等西方自然语言,但仅仅是只要学会英语等西方自然语言就能学会编程吗?不,只不过是降低了门槛和成本,但普通人没有这个时间和精力成本,普通人是大众化,是占人口最多的普罗大众,这部分人没有那个成本,也很难承担得起学习的代价,我设想的是,将学习编程的成本和代价和门槛降到最低,甚至降到零.不要小看你自己,你只要有个健全的大脑,就能轻易入门. 用母语编程无疑将会极为方便,你省去了学习一堆冗余知识的代价和成本,你唯一需要做的就是锻炼自己的逻辑思维,理性认知能力,空间想象力和时间想象力. 编程语言发展到现在,已经越来越接近自然语言化,对于英语是母语的人,其学习成本几乎是没有的.因此他们的起点很高,是直接用数学的思想在编程,这造成了如果想要进入编程这一领域,门槛也被他们拉高了.而事实上,计算机科学主要应用的是离散数学.计算机除了能进行数学计算以外,还能进行非数学计算.非数学计算就是与数学不相干的,或者离数学很远的.因为我们国家的人从小就掌握了99乘法表,对于基本的四则运算是信手拈来的,使用加减乘除是易如反掌的,而只要你掌握了四则运算就能轻易掌握计算机非数学计算.何况,高等数学和更深奥的数学是以四则运算为基础的,进入了这个领域,你会提升你自己的数学能力. 编程是一种工具,通过编程,你能指挥计算机按照你的意愿和想法工作. 当前,我国开始发力半导体工业,以后要用到编程技能的情况会越来越多.通过编程,你可以快速的建造出一个软件产品,把软件产品安装到机器里,机器就会按照软件中的程序执行命令.但是我国还没发力信息技术,现在用到的大部分信息技术全是基于西方人创造的基础.半导体技术和信息技术是计算机的两个主要领域,半导体的表现就是硬件,信息技术的表现就是软件.

编程 大数据 人工智能 机械自动化 这些是相辅相成的.现在因为媒体的宣传,人们只看到了某一边某一面,没有整体观察这一领域.做个类比,如果把人的大脑比作计算机硬件,那么,人的思想就相当于计算机软件.芯片中的晶体管就相当于人脑中的神经细胞(脑细胞),运行在晶体管中的电子信号就相当于人脑中脑细胞之间传递的生物电信号,神经网络就相当于连接数以亿计的晶体管的集成电路,而机械自动化就是人的身躯.用机械组成的机器,或机器组成的机械实现人的肢体功能和器官功能.

编程就像建筑工程师所从事的行为,编程也是建造,只不过是在计算机中建造.然后由芯片执行,芯片再驱动机器执行相应的动作.因此编程不难,实现中文编程,汉语编程,可以让上到99,下到刚会走的人都具备编程的能力,编程就是施展你的智慧,实现你的想法,展现你的才华,人的灵感一闪而过,你要抓住,因为保不齐,如果实现了你的灵感,或许能改变世界.让中国14亿人或者以汉语为母语的人或者会用汉语的人都掌握这一基本技能,无疑将会极大地丰富中文程序世界.未来的程序肯定不是现在这样艰涩难用,未来的程序一定丰富多彩,百家争鸣. 编程还能解决就业,解决行业升级,转型升级,人的生存问题,生活问题.未来,教育,医疗,生产活动,全部可以由机器实现,机器具备高度自动化的功能.衣食住行,生老病死,全部可以由机器解决.而你要做的就是编程去指挥机器怎么做. 现在,人们看不到编程的前景,并且,因为进入这个领域的大多是精英学者,他们已经思维固化,认为实现中文编程汉语编程没有意义,他们已经唯英语编程马首是瞻,对英文编程依耐性很高,认为编程已经没有别的路可走,没有别的可能性了,因此他们不想研究中文编程汉语编程,更不会来实现,因为他们已经被严重西化,他们下一步要做的就是抛弃他们的母语,和承载于母语上的文化.你问他们国学是什么,他们不会知道,就算知道这个名字,他们也说不出什么是国学.对国学涵盖的广泛文化内涵一概不知.为什么,因为国学也是一种思想,而他们学的思想是西方人的文化.是西方人的西学.并且,因为西方人已经建立了庞大的程序世界,各种条件齐全,他们拿来就用,所以他们懒得再重新建立新的程序世界,是的,这样看起来没什么不好,但是,根据物质守恒定律,得到了什么,就得付出相应的代价,就得失去什么,天下没有免费的午餐,天上不会掉馅饼.其代价就是我前面说的.迷失自我,不知自己是哪国人,不知道自己是什么种族,渐渐地无法理解生养自己的文化.那么,我们醒悟后的人,应该跟着他们的屁股走吗?与他们一起堕落被同化吗?不. 编程是用思想编程.把你的想法告诉计算机.所以,这里存在一个翻译的过程,计算机本来是没有语言的,西方人为了方便使用计算机,所以创造了计算机语言,也就是二进制,计算机里只是一堆电子信号,运行在电路中的电流,西方人通过二进制将这种信号电流格式化为两种状态,也就是正负,开关,也可以说是阴阳,用阿拉伯数字0和1表示,便于使用,但是,对于人来说,电流产生的0和1是海量的,人既无法做到读,也无法做到写,因为电流以光速运行,海量的0和1是以光速改变其状态的.因为电的速度和光的速度在真空中是一样的.那么,鉴于如此情况,西方人需要更人性化的沟通方式,更高效,更简单,于是,他们创造了汇编语言,汇编是与二进制0和1等价的,也就是点对点,一对一,只不过把1000100010001000对应为数字8888.1010对应于字母A.但是西方人很快发现这样的语言还是不够高效也不够简单,要表达一个想法给计算机,还是太繁琐,于是,西方人创造了高级程序语言,也就是市面上看到的c, c++, java, javascript ,python等,这些是某一编程语言的名字.程序就是给海量的二进制0和1编码,编程就是使用这些编码.那么,只要把编码设计为指令,一个指令表达一个简单的意思,然后把多个指令组合起来用某个单词或某个符号或一句简单的日常用语表示,使用这个单词或符号或日常用语就能表达一个复杂的意思,经过解码,计算机就能明白这一堆指令的意思,如此一来,对于人来说已经没什么沟通的障碍了,西方人与计算机沟通就像与一个会说话的人一样沟通,当然,这个"人"的智力水平仅停留在会说话的幼儿阶段,这就是高级语言,虽然还很有缺陷,但是已经足够他们发展出庞大的软件体系程序世界了.所以,这里描述的编码-解码就是翻译的过程.因为目前西方人创造的编程语言相对不完善,所以翻译的责任一部分由计算机自己承担,一部分由使用计算机的人承担,也就是程序员.由计算机承担的一部分被称之为编译器,是一个翻译的机器,由程序员承担的一部分就是编程.编好了后,就是软件产品,用户就能方便的通过软件与计算机做交互,使用程序员预设的功能.所以,实现中文编程,汉语编程的关键是,设计一个中文编译器,汉语翻译器.可以学习西方人设计个简陋的简单的编译器,模仿三岁幼童的语言方式与计算机交流,也可以重新创造一个复杂的,强大的编译器,模仿成年人沟通方式一样与计算机沟通.

当前,电子产品已经深入人们生活的各个方面,带有芯片的产品越来越多,手机电脑就不说了,已经太普遍,家用电器,电视冰箱空调,烹饪器具,汽车,工业生产,工具,车床等,都已经装上了芯片,还有国家的政策,物联网计划给所有能通电的产品装上芯片.那么,也就是说,这些产品都是可以编程的,都需要应用程序.并且,未来还会发展出你无法想象的电子产品,电器产品,编程的前景广泛至极.因为编程代表的就是人的的延伸,你能多远,编程就能走多远,而人的是没有极限的.

jnm2 commented 6 years ago

For people without Chrome, translation link: Hello, please create the Chinese version of the C# language, and .net on the language f# vb, please provide their Chinese version. Let more people in the mother tongue to achieve rapid programming, to achieve ideas, to create a richer program.

qwas982 commented 6 years ago

@jnm2
抱歉,没有翻译, 我翻译一下. Sorry, no translation, I translated it.

Hello, please create the Chinese version of the C # language, and .net on the language f # vb, please provide their Chinese version. So that more people in the mother tongue to achieve rapid programming, to achieve ideas, to create a richer program.

qwas982 commented 6 years ago

To achieve the idea of ​​universal programming.  At present, want to master the programming of this skill requires a high learning costs and costs, programming or a small number of patents, ordinary people or people who want to switch jobs to enter this area is a difficult or even impossible to achieve, Because its cost and cost is high.  So, because of this, so it is necessary to retreat and compromise?  No, I envisioned a new path. That is - to achieve [Chinese programming], [programming], programming is the main difficulty of English and other Western natural language, but only as long as learning English and other Western natural language can learn programming? No, it is only to reduce the threshold and cost, but ordinary people do not have this time and energy costs, ordinary people are popular, is the most populous general public, this part of the people do not have that cost, it is difficult to afford the cost of learning , I imagine is to learn programming costs and costs and thresholds to a minimum, or even down to 0. Do not underestimate yourself, as long as you have a sound brain, you can easily entry.  Programming with your mother tongue will undoubtedly be extremely convenient, you omit the cost and cost of learning a bunch of redundant knowledge, the only thing you need to do is exercise your own logical thinking, rational cognitive ability, spatial imagination and time imagination.  Programming language development to the present, has become increasingly close to the natural language, for English is the mother tongue, the learning cost is almost no, so their starting point is very high, is the direct use of mathematical ideas in programming, which caused if In fact, the computer science is mainly applied to discrete mathematics. In addition to the computer can be calculated in mathematics, but also non-mathematical calculations. Non-mathematical computing is with the math Irrelevant, or far from mathematics, because the people of our country have mastered the 99 multiplication table, the basic four operations are in hand, the use of addition and subtraction is easy, and as long as you master the four operations can Easy to master the computer non-mathematical calculation.Moreover, higher mathematics and more advanced mathematics is based on four operations, into this area, you will enhance your own mathematical ability.  Programming is a tool that, by programming, you can direct the computer to work according to your wishes and ideas.  At present, China began to force the semiconductor industry, the future use of programming skills will be more and more. Through programming, you can quickly build a software product, the software products installed in the machine, the machine will follow the software But the technology is all based on the creation of the basis of Westerners.Media of semiconductor technology and information technology is the computer's two main areas, the performance of the semiconductor is the hardware, but also the use of information technology, Information technology is the performance of software.    Programming  Big Data  artificial intelligence  Machinery Automation  These are complementary, and now because of the media publicity, people only see a side of a side, there is no overall observation of this area.To be an analogy, if the human brain compared to computer hardware, then, people's thinking is equivalent to the computer The chip in the chip is equivalent to the nerve cells in the brain (brain cells), the electronic signal running in the transistor is equivalent to the brain between the brain cells to pass the biological signal, the neural network is equivalent to the number of connections To the integrated circuit of the transistor, and mechanical automation is the human body.With the mechanical composition of the machine, or machine composed of mechanical realization of human limb function and organ function.    Programming is like the construction engineers engaged in the behavior of programming is also built, but is built in the computer and then by the chip implementation, the chip and then drive the implementation of the corresponding action of the machine.Therefore, programming is not difficult to achieve Chinese programming, Chinese programming, On the 99, down to the people who have just have the ability to programming, programming is to display your wisdom, to achieve your ideas, to show your talent, people's inspiration flashed, you have to seize, because the security is missing, If you realize your inspiration, you may be able to change the world, and it will undoubtedly enrich the Chinese program world for the 1.4 million people in China or the native speakers of Chinese or who will use Chinese to master the basic skills. Certainly not so hard and difficult now, the future of the program must be rich and colorful, a hundred schools of thought contend.  Programming, but also solve the employment, to solve the industry to upgrade, transformation and upgrading, human survival problems, life problems.Future, education, health care, production activities, all can be realized by the machine, the machine has a highly automated function of food and clothing, life and death, all can be The machine is solved, and what you have to do is programming to command the machine how to do it.  Now, people can not see the prospect of programming, and, because most of the field into the elite scholars, they have thinking curing, that the realization of Chinese programming Chinese programming does not make sense, they have only English programming horse is the first, the English programming is very high , That programming has no other way to go, no other possibilities, so they do not want to study Chinese programming Chinese programming, but will not come to realize, because they have been seriously Westernized, they have to do the next step is to abandon their The mother tongue, and the culture that engages in the mother tongue.When you ask them what they are, they will not know, even if they know the name, they can not tell what is the country.There is a wide range of cultural connotation covered by Guoxue. But also because the Westerners have established a large program world, all the conditions are complete, they used to use, so they are too lazy to do so. Re-establish the new world of the program, yes, it looks like nothing is bad, but, according to the law of conservation of matter, what has been, you have to pay the phase Should the price, you have to lose anything, the world does not have free lunch, the sky will not fall pies. The price is what I said earlier. Lost self, I do not know who is the country, do not know what race, gradually unable to understand So that the people we wake up should follow their ass and fall with them assimilated? No.  So that there is a translation process, the computer is no language, Westerners in order to facilitate the use of computers, so to create a computer language, that is, binary, the computer is only one Stack the electronic signal, the current running in the circuit, the Westerners through the binary signal current will be formatted into two states, that is, positive and negative, the switch can also be said to be yin and yang, with Arabic numerals 0 and 1 said, easy to use , But for people, the current generated 0 and 1 is massive, people can not be read, can not do to write, because the current run at the speed of light, mass 0 and 1 is the speed of light to change its state. Because the speed of electricity and the speed of light in the vacuum is the same.Then, in view of this situation, Westerners need more humane way of communication, more efficient and more simple, so they created the assembly language, assembly is with binary 0 and 1 is equivalent, that is, point to point, one to one, but the 1000100010001000 corresponds to the number 8888.1010 corresponds to the letter A. But the West soon found that the language is still not efficient enough , To express an idea to the computer, or too cumbersome, so, Westerners to create a high-level programming language, that is, the market to see c, c ++, java, javascript, python, etc. These are the names of a programming language. That is, to the mass of the binary 0 and 1 encoding, programming is to use these codes. So, as long as the code design for the instruction, an instruction to express a simple meaning, and then combine a number of instructions with a word or a symbol or a sentence Simple daily language that the use of the word or symbol or daily language can express a complex meaning, after decoding, the computer will be able to understand the meaning of this pile of instructions, this way, for people who have no communication barriers , The West communicates with the computer as if it were a talking person. Of course, the intelligence level of this "person" is only in the stage of talking, which is high-level language, although it is still flawed, but it is enough The development of a huge software system program world.Therefore, here describes the encoding - decoding is the translation process because the current Westerners to create programming language Relatively imperfect, so part of the responsibility of the translation by the computer itself, part of the use of computer users, that is, programmers. A part of the computer is called the compiler, is a translation of the machine, by the programmer Part of the programming is compiled, that is, software products, users can easily through the software and computer interaction, the use of programmers preset function.Therefore, the realization of Chinese programming, the key to Chinese programming is to design a Chinese compiler You can learn Westerners to design a simple simple compiler, imitate the three-year-old child's language and computer communication, you can also re-create a complex, powerful compiler, mimic the way adults communicate with Computer communication.    At present, the electronic products have been deep in all aspects of people's lives, with more and more products of the chip, mobile computers do not say, has been too common, household appliances, TV fridge air conditioning, cooking utensils, cars, industrial production, Lathes, etc., have been installed on the chip, as well as national policy, the Internet of Things plans to put all the products can be installed on the chip.Then, that is, these products are programmable, all need applications. The future will develop you can not imagine the electronic products, electrical products, programming prospects are extremely wide.As the programming representative is the human [want] (thinking) extension, you can [think] (thinking) how far, programming on Can go far, and people [think] (thinking) is no limit.

qrli commented 6 years ago

I'd say, in Chinese forums, this is usually a joke. But there do be a few people pro it.

We generally view it as non-sense. If you really want it, you can create an editor plugin to translate keywords to Chinese and display them.

qwas982 commented 6 years ago

@qrli 你是中国人吗? 怎么对中文编程的话题这么熟悉?看起来你没明白我表达的重点.你是在抵制中文编程吧. 实现母语编程怎么可能没有意义? C#用的字符已经非常接近英语自然语言,也就是越来越母语化,如果这个星球上的人都能用他们自己的母语编程,软件生态将空前的强大和发展. 你完全不知道量变带来的质变是怎样的,就急着否定它? 我设想的是在编程语言的基础上实现本地化和母语化, 不是用插件实现.


are you Chinese? How is the Chinese programming topic so familiar? It looks like you did not understand the focus of my expression. You are resisting Chinese programming. How does native language programming do not make sense? C # characters are very close to the English natural language, that is, more and more mother tongue, if the planet can use their own native language programming, software ecology will be unprecedented and development. You do not know what kind of quality change brought about by quantitative change, it is anxious to deny or negative it? Quantity change to Quality change 量变到质变. Change to qualitative change. I envisioned localization and native language based on the programming language, not using plug-ins.

qwas982 commented 6 years ago

希望 微软官方的人看到我的建议,并慎重考虑此建议.谢谢. Hope that Microsoft officials see my advice and take this proposal seriously.

我觉得最重要的是,C# F# VB已经偏向英语自然语言化,说英语的人总共只有那么多,并且这部分人意愿编程的就更少,有意愿的人又有更多选择(其它编程语言),于是能在C#上发展生根的就很稀少了,没人去研究它,又怎么会进步呢,大家去给微软提建议,让它推出中文版的C# ,什么都用中文 用汉字,中国14亿人 就算一半7亿人学会使用C#都是已经了不得的事. I think the most important thing is that C # F # VB has been biased towards English natural language, speak English people only so much, and this part of the people will be less programming, there are more people to choose (other programming language ), So the development of rooting in the C # is very rare, no one to study it, how will progress it, we go to Microsoft to make recommendations, let it launch the Chinese version of the C #, All characters are use Chinese with Chinese characters, China 1.4 billion people even if half of the 700 million people learn to use C # are also a very large market.

本地化,母语化可能是突破的关键,生态需要人去建立,首先要人多.中国会英语的毕竟少数,再说会的人又看不上C#.这可真是矛盾. Localization, the mother tongue may be the key to breakthrough, the ecological needs of people to build, first of all people. China will be a small number of English, say people will not see C #. This is really contradictory.

ufcpp commented 6 years ago

你自己做 Do it yourself!

qrli commented 6 years ago

@qwas982 Company has to earn money to keep going. If you pay a big bill, someone will do it for you. You cannot ask someone to do you a favor for free.

And, computer language is not natural language. E.g. Your math symbols are not Chinese, your numbers are not Chinese, but you have no problem with them, right?

jonechenug commented 6 years ago

Just a joke!Please close this valueless issues!

ufcpp commented 6 years ago

@qwas982 中国だけでなく、日本でも同様の問題があります。多くのプログラミング言語が英語をベースにしていて、日本語話者にとってプログラミングの難しさの一因になっています。 当然、日本でも「日本語プログラミング言語」が欲しいという声はあります。実際になでしこというプログラミング言語があります。しかし、日本語プログラミング言語を作れるのはやっぱり日本語話者だけでしょう。中国語ネイティブなC#が欲しければ、それは中国語話者が作るべきで、他力本願でマイクロソフトに頼むものではないと思います。 ちなみに、日本語プログラミング言語は、存在こそあるものの、実際のところあまり流行はしていません。

qwas982 commented 6 years ago

@qrli 你不过是站在你自己的角度考虑罢了,你没站在微软这种大企业的角度和市场的角度考虑.你不知道生态发达会是怎样一番景象,并且,你想要阻止对编程感兴趣和热心的人. 并且,阿拉伯数字和数学符号没必要中文化.

You are just standing on your own point of view, you do not stand on the perspective of Microsoft's big business and the market point of view.You do not know how ecology is going on, and you want to stop programming Interested and enthusiastic. Also, Arabic numerals and mathematical symbols are not necessary for Chinese characters.

qwas982 commented 6 years ago

@jonechenug
独裁? 专制?

Dictatorship

autocratic?

shisoft commented 6 years ago

It's not justify to let other people wasting their time for you so you just don't need to learn English. Suppose you have Chinese programming language, what's next? To build a comprehensive computer software, you still need to learn a lot. Most of those documents, thesis are all written in English. So what, asked them to translate it for you too?

qwas982 commented 6 years ago

@ufcpp 朋友你好, 我表达的意思是,本地化和母语化,就像一款国际化的软件会提供多种版本一样,

Hello friend, I mean, that localization and native language, like an international software will provide a Multi-language version,

こんにちは友人、 つまり、国際化されたソフトウェアのように、ローカリゼーションとネイティブ言語が多言語バージョンを提供し、

qwas982 commented 6 years ago

@shisoft 看起来你也是站在你自己的角度考虑问题罢了,你觉得你不需要,别人也不需要.所以,你认为,你学会了英语,别人也应该学会英语才能从事编程这一工作. 我并不是为我自己考虑.我考虑的是市场需求. 关于你说的文档翻译问题,我认为,从事这一行业的人变多了,自然会有人去翻译.

It seems that you are standing on your own point of view to consider the problem, you think you do not need, others do not need.Therefore, you think, you learn English, others should learn English to engage in programming this work. I'm not thinking about myself. I'm thinking about the market demand. On the translation of the document you said, I think that people who engage in this industry more, and naturally someone will be translated.

jonechenug commented 6 years ago

@qwas982 You want this?It is available in csharp!

    class 中文类
    {
        static void Main(string[] args)
        {
            主程序();
        }
        static void 主程序()
        {
            输出("这是不是你想要的中文编程?");
            Console.ReadKey();
        }
        static void 输出(String 字符串)
        {
            Console.Write(字符串);
        }
    }
qwas982 commented 6 years ago

@jonechenug

我说的是更进一步 比如;

I'm talking about it further such as;

                         ```类  中文类 {
                               静态 空 主要(字符串[] 参数) { 
                                   主程序(); 
                                 } 
                                静态 空 主程序() {
                                   输出("这是不是你想要的中文编程?"); 
                                     控制台.读键(); 
                                 } 
                                 静态 空 输出(字符串 字符串) {
                                       控制台.写(字符串); 
                                 } 
                          }```
shisoft commented 6 years ago

What you are trying to achieve are just symbols, what symbols to form a statement which makes it meaningful to both the compiler and humans. The purpose of building a programming language is for efficiency and expressive. What language / characters to represent those symbols are irrelevant. It's also not a problem if you just translating those symbols, but Chinese symbols are inefficient on developing on modern keyboard and fewer people can read it, so what's the point of this?

qgy123 commented 6 years ago

朋友,有个死掉的项目叫易飞扬,我觉得他可以圆你的“梦” Friend, there is a dead project called "Yi FeiYang", I think it can round your "dream".

qwas982 commented 6 years ago

@shisoft 你考虑的是面向英语为母语的编程人员,而不是非英语为母语的编程人员.语言和字符的宿主是什么? 不就是文字符号吗?如果你认为 language / characters 是无关紧要的,那么,为什么现在人类编程还是需要输入 language / characters 才能与计算机沟通呢? 第二个问题,你说用中文或其他非英语为母语的文化用键盘开发效率底下,但是你忽略了现在的操作系统都是用软键盘 soft keyboard 完成字符的输入,中文有拼音输入法,输入效率不比输入英语差.

Are you thinking about English-speaking programmers, not non-native speakers? What is the language and character of the host? If you think language / characters is irrelevant, then why is human programming still need to enter language / characters to communicate with the computer? The second question, you say in Chinese or other non-native language culture with the keyboard to develop efficiency under, but you ignore the current operating system are using soft keyboard soft keyboard to complete the input characters, the Chinese Pinyin input method, enter Efficiency is not worse than typing in English.

qwas982 commented 6 years ago

@qgy123 朋友,易语言 / 易飞扬 已经停止开发很久了,并且,它们不开源.因为开发[易]系列语言的公司不重视企业应用,和后续发展.所以,没有企业愿意应用它.

现在有很多人对中文编程的概念还停留在非常早期的阶段和水平, 一提中文编程就说易语言等早已停止开发的汉语编程语言. 对汉字输入的印象还停留在,拼音输入法没发明之前的阶段和水平.

Friends, yi 易 language / yi 易 to fly has been developed for a long time, and they are not open source. Because the development of [yi 易] series of language companies do not attach importance to enterprise applications, and follow-up development.Therefore, no business is willing to apply it.

Now there are a lot of people on the concept of Chinese programming still remain in the very early stages and levels, a mention of Chinese programming on language yi 易 to stop the development of Chinese programming language. The impression of the input of Chinese characters still stays in, Pinyin input method did not invent the stage and level before.

nobodxbodon commented 6 years ago

@ufcpp I agree that it's up to Chinese speakers to develop programming languages in Chinese. I heard about なでしこ before, and seems it's very useful for certain user group and certain tasks. I'm also trying to develop a simple script language, hopefully using Chinese grammar/tokens, to solve simple tasks, as a baby step towards Chinese PL.

BTW do you know any open source Japanese programming language that has some popularity?

MkazemAkhgary commented 6 years ago

@shisoft well china has got more than 1 billion population. even 1% of them (that don't know english) investing here is 1 million developers. (just for fun :))

ufcpp commented 6 years ago

@nobodxbodon Listed here: https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

I don't know their popularity and openness though.

Richiban commented 6 years ago

@MkazemAkhgary

well china has got more than 1 billion population. even 1% of them (that don't know english) investing here is 1 million developers

Ahem... 1% of a billion is 10 million :P

Richiban commented 6 years ago

@qwas982 Apologies if it seems that your suggestion is meeting with hostility, but really the choice of English for programming is a completely arbitrary one. While it may be very western-centric, for sure, that's still not an argument to switch to Chinese instead. What about all the other languages out there? Why don't they get a version of C# as well?

You can easily imagine a version in Arabic, Spanish, Russian or Urdu.

HaloFour commented 6 years ago

Even if MS were to take up this idea and create a new language based on VB.NET and F# but using Chinese grammar the result would not be C#, nor remotely related to C#.

I'm curious what such a thing would look like. Sure, C# (and many programming languages) use English tokens and maybe a tiny bit of English grammar but it's far from natural language. Even COBOL is stilted, at best. Most of the time those words have little equivalent meaning outside of programming and their combination would be nonsense to an English speaker outside of their context. I can't imagine that a programming language geared towards another written language would be very different.

DavidArno commented 6 years ago

@HaloFour,

Didn't MS do something like this with Visual Basic? I seem to recall that localized version of the keywords were supported. But it then caused problems with identifier names in libraries from one country clashing with keywords in another. Or did I just make that up?

qwas982 commented 6 years ago

@Richiban 你好,朋友 我的意思并不是完全否定用英语编程,也不是否定西方文化. 我的意思是增加一种选择,因为这里有更宽广的市场,和无限的可能.在中国,想要学习编程但又不会英语的人有很多,并且,因为受到政府的高压统治和信息封锁,普通的大众并没有机会和精力研究程序设计和程序语言. 编程对普通中国人来说是一件遥远的事.

我设想的是,如果打破了交流这一障碍,就会让更多的普通人学习和使用编程.交流有很多种情况,人与人之间的交流,人与计算机之间的交流. 对于其他自然语言,Arabic, Spanish, Russian 也可以增加这一种选择,也就是本地化,母语化,就像国际化的程序或操作系统一样,提供当地的语言版本.

编程就是表达想法,那么用母语表达,无疑会更加高效和准确.

Hello,friend

I do not mean to complete negative programming in English, nor does it complete negative Western culture. I mean adding a choice because there is a broader market, and infinite possibilities. In China, there are a lot of people who want to learn programming but do not have English, and because of the government's high pressure rule and information blockade , The general public did not have the opportunity and energy to study or research the programming and programming language. Programming for ordinary Chinese people is a distant thing.

I envisage that if you break the barriers to communication, it will allow more ordinary people to learn and use programming. There are many kinds of exchanges, interpersonal communication, communication between people and computers. For other natural languages, Arabic, Spanish, and Russian can also add this option, that is, localized, native language, like an international program or operating system, providing local language versions.

Programming is to express ideas, then the expression in the mother tongue, will undoubtedly be more efficient and accurate.

TKT2016 commented 6 years ago

请看我的Z语言 http://www.zyuyan.org/zlogo3/index.php

说明:第一个zlogo小程序

开始绘图: 窗口设置标题为"第一个zlogo小程序" 小海龟的画笔的颜色=绿色 小海龟左转60度 小海龟前进200

HaloFour commented 6 years ago

@DavidArno

Didn't MS do something like this with Visual Basic? I seem to recall that localized version of the keywords were supported.

Not to my knowledge. I think Apple did something like that with AppleBasic early on but the support was removed.

MgSam commented 6 years ago

vIneH neH tlhIngan! DaHjaj QaQ jaj ngoq!

HaloFour commented 6 years ago

@MgSam

https://esolangs.org/wiki/Var'aq

TKT2016 commented 6 years ago

开始绘图: (旋转绘制三角)12次;

过程:旋转绘制三角 小海龟左转90度,小海龟前进200 小海龟左转120度,小海龟前进200 小海龟左转120度,小海龟前进200

qwas982 commented 6 years ago

@HaloFour

你好,朋友.

我并不是说 ,程序语言应该完全的像自然语言一样,我没有表达这个意思.

我的意思是,tokens使用与C#中(或其他程序语言)英语等价的词汇就行了.

我观察到,基于虚拟机 xVM ( x=java,javascript,python,.net;) 的语言,大多已经使用了很多自然语言中的词汇作为tokens.所以可以等价替换为其他自然语言的词汇是一种可能性. 用自然语言词汇作为 tokens.

Hello,friend

I am not saying that the programming language should be exactly like the natural language, I did not express this meaning.

What i mean is that the token is used with the equivalent English word in C #. (Or other programming language)

I have observed that based on the virtual machine xVM language (x = java, javascript, python, .net;), most have used a lot of natural language vocabulary as tokens. So it is possible to replace vocabulary with other natural language equivalently. Use natural language vocabulary as a token.

HaloFour commented 6 years ago

@qwas982

Have you considered forking Roslyn and trying to replace the English keywords that it expects with Chinese identifiers instead? It'd be an interesting experiment, if nothing else. There might be some Unicode hurdles but otherwise I imagine that it would be somewhat straightforward.

I think that one of the main reasons that MS shouldn't go down this path is that it creates multiple dialects of the same language. Where that becomes a problem is that what is a legal identifier in one dialect might be a keyword in another, causing a compiler error.

AppleScript originally went down this path. Not only did they permit keywords to be replaced with their native equivalents but it sounds like they also allowed some modifications to the grammar to better support SOV languages like Japanese. But it found limited adoption and where it was adopted scripts became a mess of mixed languages and Apple eventually dropped support. Even if there were a Chinese flavor of C# I wouldn't expect it to reach wide support and what support it found would be siloed off from the rest of the C# community as a whole.

sharwell commented 6 years ago

Looking at the example in https://github.com/dotnet/csharplang/issues/993#issuecomment-336028834, it appears this request is a combined request for Chinese-language keywords and Chinese-language base class library (BCL).

For the set of users interested in programming, it may actually be less net work for all of those users to learn the English form of the language than to create and maintain culture-specific variants of the language and popular libraries.

nobodxbodon commented 6 years ago

FYI here is the work that's more or less related to the ideas here: Change keywords of existing programming languages to Chinese Translate core libraries in C#

@jonechenug indeed we are practicing naming in Chinese (or a dialect) in as much languages as possible in this group: Just a handful of real project that has large enough code base Including wrapping popular API in Chinese, like JUnit4, and some experimental projects using Chinese naming: https://github.com/program-in-chinese/Java https://github.com/program-in-chinese/javascript And writing programming tutorial using sample programs with Chinese naming: https://github.com/program-in-chinese/java_in_hours_chn

because of the government's high pressure rule and information blockade , The general public did not have the opportunity and energy to study or research the programming and programming language.

Please, leave politics out of this discussion, which is controversial enough already!

Clockwork-Muse commented 6 years ago

I'm echoing @sharwell:

The problem is not that C# or any other programming language is in English. The languages themselves are very small, usually only around 50 words or so. The problem is that libraries - distributed packages of code - are usually only documented in English. This is mostly true in the open-source world, as some big companies do provide documentation in other languages.

nobodxbodon commented 6 years ago

@sharwell I agree creating Chinese version for all the existing BCL is impossible. Still, IMO it's feasible to start with the most popular libraries and frameworks, as most projects use maybe 10-20 top libraries in one language, and all others are more like 'long-tail'. One experiment I did is making a Chinese wrapper for JUnit4. Before that, I actually tried to create Chinese version for core JDK library, but the workload is obviously too much for single developer, even though I limited the scope to java.util only.

In my view one main benefit of creating Chinese BCL is improving program readability, for native Chinese developers working on domestic projects, which most likely won't involve any English-speaking developers in their total lifecycle. Other than that, using Chinese naming like @jonechenug's example above is definitely a most direct way to improve readability and maintainability, for those certain projects. As an example, here's a piece of an unfinished ASM assembler using Chinese naming in Java.

@HaloFour replacing keywords is doable for sure. BTW here is a list of languages of which Chinese version keywords are added. Like @Clockwork-Muse pointed out, there are around 50 keywords in all. Similarly with all other PL. Besides, the language grammars are designed to fit the keywords in the beginning, so IMO translating them may not improve much readability for existing programs. Nevertheless it could be more friendly to native learners new to programming.

@Richiban interestingly I imagined a programming language that supports localized keywords as a built-in feature. I just learnt there was failed attempt, like AppleScript mentioned above, but I suppose some similar effects can be achieved by a 'light-weight' approach, editor plugins, as mentioned by @qrli .

@ufcpp thanks for the list. I took a quick look and seems all of them are not open-source. Pitifully all the existing commercial Chinese PL are also close source, as far as I know.

aL3891 commented 6 years ago

Perhaps I misunderstand but a large part of the argument for creating a Chinese C# seems to be that the standard C# is made by westerners that do not understand Chinese culture/people. But if that is the case, why are you asking those same westerners to create a Chinese programming language? Wouldn't any other language they create also have the same problems?

Generally speaking I think more languages is a good thing and if people find it easer to program in their native language, then someone should fill that need, but I just don't think that is something the C# team should do. (I'm not a English speaking native, but i'd never want to program in my native language, but I suppose I am a "westerner" though)

This seems totally doable with Roslyn and perhaps some post compilation though, Uwp already project apis to different programming languages, and it seems like you could generate Chinese language wrappers around the BCL classes, but again, i think this is outside the scope of c# itself.

Clockwork-Muse commented 6 years ago

@nobodxbodon - .... not that there's much in the way of "real" English grammar in most programming languages. There are far more abstract or domain-specific symbols. That's ignoring the fact that there's a higher mental load in learning the basic concepts and domain knowledge.

nobodxbodon commented 6 years ago

@Clockwork-Muse

not that there's much in the way of "real" English grammar in most programming languages.

I agree that, like many other mentioned, PLs are far from natural language. However, even these PL grammars has a lot of styles that doesn't exist in Chinese written languages (or other Asian languages like Japanese or Korean). One simple example is the space as separator. That being said, whether it's reasonable to use space as separator in a Chinese PL is a totally different topic. It's just an example to show even the grammar that seems neutral enough has the flavor of English grammar, that you may not realize.

There are far more abstract or domain-specific symbols. That's ignoring the fact that there's a higher mental load in learning the basic concepts and domain knowledge.

If you refer to my previous comment Nevertheless it could be more friendly to native learners new to programming., I don't see how the fact you described would invalidate it. I agree there're huge efforts required to become a good programmer, other than just learning the language itself. But that doesn't mean we don't need to make learning the language itself easier. That being said, whether or how to 'localize' the existing PL could make learning language easier for native learners is another topic, which very likely won't be verified until being tried out.

@aL3891 even though I'm also not sure how much benefit a localized version of C# would help new learners or current professionals, it doesn't mean it's not a potential selling point for local market. I'm only imagining here, but say C# has a proper Chinese dialect, even if it'll only be used as educational tools for elementary school students in China (yes nowadays they start teaching programming that early, not that I like it), it will give C# some advantage in the real market over other languages that don't have this feature.

gafter commented 6 years ago

This request is too vague to be actionable. We need the Chinese community - that means you, the original poster - to tell us exactly what this would mean for the language. What, exactly, would you like changed? I don't imagine that the developers of C# - none of them native Chinese speakers - are in the best position to design what you seek.

I am aware of one shortcoming for Chinese users right now - Unicode surrogate pairs are not treated as valid characters in an identifier. I think of that more as a compiler bug than a language shortcoming. But I haven't heard any complaints about it from users.

nobodxbodon commented 6 years ago

@gafter that's great question. Based on the poster's sample, I see at least two features:

To give some context, there's a commercial Chinese PL, mentioned by previous comment, that has similar features. Sample here screen shot 2017-10-12 at 7 57 43 pm

BTW could you please share some reference/issue about the unicode surrogate pair problem? I suppose you don't mean using Chinese characters as identifier like sample above?

iam3yal commented 6 years ago

Well, if and when someone will pick on that work he/she won't have to think too much about the name as Chinese# fits well. 😆

But really, I think that this kind of thing should be done through editors' extensions or even a transpiler that on one hand understands C# and on the other hand understands Chinese and then when you write Chinese it transpiles everything to idiomatic C# file, this is better because this will at least allow people that can't understand Chinese the ability to read the transpiled code.

qrli commented 6 years ago

@gafter Surrogate pairs in source code will almost never be used in source codes.

  1. Only a small percent of companies/organization use Chinese identifiers in code. But it is not rare to use Chinese comments.
  2. The Chinese characters which need to be encoded in surrogate pairs are rarely used one. Many of them are dead characters, which are only used in ancient archive or research. Programmers generally do not know them at all.

However, the later added fancy emoji characters may pose a real issue, if a programmer tries to use them in identifier for fun.

qrli commented 6 years ago

@eyalsk There is a bigger problem that many concepts do not have a translation (a common translation at least). E.g. we just speak GPU shader in a Chinese sentence. Same for iPhone. There are too many new concepts/terms showing up each day. And they may fade out even before a common translation is adopted.

In one TechEd years before, the presenter said "create a library" when he created a class library, and the Chinese translation on screen is 建一个图书馆 "build a (real physical) library", even though there is a common translation . LOL

Joe4evr commented 6 years ago
  • support Chinese version of all the keywords, like class->, static->静态, public->公开
  • support Chinese version of built-in types and core library, like String->字符串, Console->控制台

Based on this, I can imagine a compiler extension that defines global aliases for keywords in this manner. That wouldn't address the grammar of the language, but if enough of the intent is conveyed, that hopefully shouldn't matter too much.

nobodxbodon commented 6 years ago

@eyalsk Chinese# good one :) I thought you meant auto-translating the keywords and core libraries only (which seems feasible), but seems I misunderstood. If developer chooses to use Chinese version of C#, they most likely will use Chinese naming for most of the variables/methods/classes, etc, with exceptions of the new terms with no good translation. As @qrli's 'library' example, the difficulty of translating Chinese naming in source code will be comparable to translating natural language. In spite of that, I would imagine that those programs are not likely to be meant to target non-Chinese speaking developers (or even open source) anyways. Otherwise the programmer would have not chosen the Chinese version in the first place.

@Joe4evr I wonder if it's proper to put the System classes and their methods (the second part, String, Console, etc) in the alias table in compiler extension?