tag:blogger.com,1999:blog-5621024.post7928923824311359795..comments2024-01-09T03:52:43.027-08:00Comments on The Abstract Factory: How to design a popular programming languageKeunwoo Lee (Cog)http://www.blogger.com/profile/05577836853536292311noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-5621024.post-36198359482665009932010-07-02T11:22:01.901-07:002010-07-02T11:22:01.901-07:00Is the next Contributor stuck and in need of a sug...Is the next Contributor stuck and in need of a suggestion ?<br /><br /><br />We can add a comment at the end of our code to suggest what is NEXT but we presume that no other code will preceed, or is better than our own, IF we chose to write any code, otherwise we just vote (once for each line of Code).<br /><br />(Note: The "Language" is expanding already.)<br /><br /><br />My suggestion is that the _first_ Contributor's Code should check that _MY_ Code is correct (not a Virus or somehow the memory got corrupted).<br /><br />IF everything looks OK then _you_ can simply return TRUE (a 1) and allow the _next_ person to use that value to determine IF thier Code should RUN _OR_ if thier Function should exit will a FAILURE ("Environment Corrupted, no means to Repair") Error.<br /><br />OBVIOUSLY the THIRD contributor MUST NOT copy the First or Second Contrubtor's Code (that would make the OS/Language slower and possibly pointless (if everyone did the same thing)).<br /><br />That is my suggestion to the Second Person, the Third person may wish to declare that the OS is at "Time 0" and Operating Correctley by returning a "1" to the Fourth Contributor.<br /><br /><br />Eventually we will get to the Person who causes ACL2s to execute<br />and we can Compile the Language we Vote to develope.<br /><br />Thanks,<br />RobRob Clarknoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-63602767779619602182010-07-02T10:57:02.722-07:002010-07-02T10:57:02.722-07:00Continued.
References:
ATI Stream for X86 OR (n...Continued.<br /><br /><br />References:<br /><br />ATI Stream for X86 OR (not and) OpenCL/DirectX11 Graphics Cards:<br />http://developer.amd.com/gpu/ATIStreamSDK/pages/Documentation.aspx<br /><br /><br />cl-opengl<br />http://common-lisp.net/project/cl-opengl/<br /><br />ACL2s<br />http://acl2s.ccs.neu.edu/acl2s/doc/<br /><br /><br /><br />In Point two you mention:<br /><br />"Make your language the default way to program on that platform."<br /><br />We do that by giving everyone ONE OPINION (for each line of Code) which they may choose to express OR not, the right to revise it, and the ability to Vote for their own Opinion (if they chose to give it) or someone else's "Line of Code".<br /><br /><br />Ultimately, or if I am mistaken about that, penultimately (tell me what comes FIRST):<br /><br />In point three you say "Wait".<br /><br />Here is the outline for the "Operating System / Language to run on it":<br /><br />This is how the Operating System will Boot.<br /> <br />1. Well wait I shall as must we all and then I will ask you "when do you want your answer" and "what do you want me to do" ?<br /><br />I imaging you desire your answer to be correct and to receive it as queckly as possible - or am I mistaken ?<br /><br />What you will want me to do is to Boot the OS - or am I mistaken ?<br /><br />We will abstract how we do this (this is where "Wait" comes in, you get TOTAL control over the duration, how is that for power and expressivness), we will all decide what is best and that is what we will end up doing.<br /><br />In order to "Start" this "OS" as fast as possible in the quickest manner possible so that the "Multi-Core Lisp" can run the ACL2s Interpretor/Compiler (to produce correct "C" Code that can be Optimized to fast code by GCC), to write the Language we will use.<br /><br />Sort of like the "2 Penny Nail".<br /><br /><br />Here is either the "Start" of all of this (or if I am mistaken about that then someone else will say that thier code should execute before mine OR that thier code replaces mine and is better) - then we all Vote.<br /><br /><br /><br />/* Rob's New OS/Langauge */<br /><br />/* Stub Code */<br />very long function_of_contribtor_0000000000001__contribtion_0000000000001_ {<br /> return(very long int);<br />};<br /><br /><br />/* Rob's Contibution for the first line */<br /> function_of_contribtor_0000000000000__contribtion_0000000000001_( function_of_contribtor_0000000000001__contribtion_0000000000001_()); /* Contibutor's ONE's Contribution */<br /> return;<br />}<br /><br /><br />main(VOID) {<br /><br /> function_of_contribtor_0000000000000__contribtion_0000000000001_(); /* Rob's Contibution for the First Line of Code. */<br /><br />exit(VOID);<br />}<br /><br />Thanks,<br />Rob<br /><br /><br />Note: Please add to this program OR fix my code.Rob Clarknoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-81653314222679730862010-07-02T10:51:25.330-07:002010-07-02T10:51:25.330-07:00How to design a popular programming language ?
Th...How to design a popular programming language ?<br /><br />The "Method" was "invented" long ago, the only thing that has changed is the Hardware.<br /><br /><br />If I am incorrect about that then here is "Rob's Method":<br /><br />1. Design for the Hardware that _many_ people already have as well as what they will likely be getting in the Future.<br /><br />- You can do that by "developing" a 'Language' that _many_ people already know and will likely know in the Future.<br /><br />-- - You can do that by "re-abstracting" what you "truthfully want to do".<br /><br />--- - If what you really want to do is "have your Hardware produce the correct result quickly" then you desire to "'talk' to the Hardware directly" (IE: Use Assembly Language).<br /><br />--- - Since that is non-portable and difficult (at the present time AND for the foreseeable Future) we will not "'talk' to the Hardware directly" but instead use "C" and "OpenCL" to implement a new Language, that will be easiest and most portable.<br /><br /><br />2. "Don't put the the Horse before the Cart".<br /><br />- You can avoid that problem by "developing" a 'new' "Operating System" to run the new Language that you will create as _fast_ as possible, this is also _critical_.<br /><br />-- - You can do that by "re-abstracting" what you "truthfully want to do".<br /><br />--- - If what you really want to do is "have your 'Operating System' produce the correct result quickly" then you desire to "'talk' to the Hardware directly" (IE: Use assembly Language).<br /><br />--- - Since that is non-portable and difficult (at the present time AND for the foreseeable Future) we will not "talk to the Hardware directly" but instead use "C" and "OpenCL" to implement a new 'Operating System', that will be easiest and most portable.<br /><br /><br />---- - You can do that by "re-abstracting" what you "truthfully want to do".<br /><br />[***** Note: my "Arguement" becomes _partially_ "Recursive" *****]<br /><br />----- - If what you really want to do is "have your 'Operating System' produce the correct result quickly" AND you desire a portable solution we will use "C" and "OpenCL" to [***** Note that "Recursion" partially un-winds here. *****] implement a new 'Operating System', that will be easiest and most portable.<br /><br /><br />Do you see where the "Arguement", or "Solution" goes ?<br /><br /><br />You say:<br /><br />"There are three steps:<br /><br />1. Find a new platform that will be a huge success in a few years. <br />2. Make your language the default way to program on that platform. <br />3. Wait. "<br /><br /><br />I have suggested that for your first Point we use "C" and "OpenCL" to abstract the Specification [Note: That is a "Technical" Term, see: http://en.wikipedia.org/wiki/Formal_specification ] of our Hardware.<br /><br />- In order to produce the "C" and "OpenCL" code so we are "certain, without exceptions or restrictions" that it is correct we can use "ACL2s" to produce our Code by abstracting the Platform of "cl-opengl" to provide the "Lisp Machine" for "ACL2s" to run on.<br /><br /><br />ACL2s will compile executable for that is "CORRECT" and runs "QUICKLY" (AFTER it is compiled).<br /><br />We will let the "'C' Language Optimizer" (GCC) cause it to run as fast as it can (get something else (we already have) to do the "heavy lifting"). <br /><br />Note: Along with not putting the Cart before the Horse we do not reinvent the Wheel.<br /><br /><br />When we know that everything is running COMPLETELY correctly and as quickly as it is able THEN we can write that new Language you were talking about... <br /><br />...<br /><br />TBC,<br />RobRob Clarknoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-41095325935600251332010-06-28T16:14:59.380-07:002010-06-28T16:14:59.380-07:00@Phil Hagelberg:
I think the author means *all* la...@Phil Hagelberg:<br />I think the author means *all* languages potentially interoperating well. HTTP is a good example because even many of the most obscure languages can at least do TCP/IP in order to create an HTTP library, or they have HTTP out-of-the-box. With what you're suggesting, "interoperability" means all languages have to run on something like the JVM (or CLR, etc.). That's not a solution, especially when there's a reason languages like Erlang can't really run on the JVM very well, but run well on its own BEAM virtual machine. The JVM isn't a good fit for every language. Languages that require tail-calls (Scheme, Erlang, etc.) or first-class continuations don't necessarily have an easy time being implemented on the JVM.<br /><br />@Anonymous (who switched to Python)<br /><br />I agree. Regardless of Python the language, its strategy was the right one:<br /><br />1. Cross-platform batteries included. If not included, it's really easy to install 3rd party libs (easy_install, Windows installer packages readily available). I don't make the distinction between built-in and 3rd party Python libs, because they're just as easy either way. No fiddling with flaky alpha-quality custom compiling, etc. I can't say that for 99% of languages.<br /><br />3. Make it easy to understand (one way to do most things, focus on reading code over writing code but still make writing easy)<br /><br />4. Sane licensing<br /><br /><br />I like the LISPs (Common Lisp, Scheme, etc.) but it's impossible to find ODBC support, decent GUI support, cross-platform support, and sane licensing all at the *same time*. Scheme sucks at ODBC support, Common Lisp sucks at GUI support, etc.<br /><br />I WANT to learn other languages, and have dozens of them on my computer (Haskell/GHC, Pharo Smalltalk, Clojure, OCaml, Erlang, FreePascal/Lazarus, PLT-Scheme/Racket, Gambit, etc.), and I like and use many of them (at least for fun, with Erlang being one practical exception). But for real programs, it's all the same theme: PROGRAMMERS WANT POLISH AND CONVENIENCE, NOT HOOPS TO JUMP THROUGH TO GET OFF THE GROUND.robwalker01https://www.blogger.com/profile/01360933806808064322noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-71266430822351317762010-06-26T14:51:16.839-07:002010-06-26T14:51:16.839-07:00I wonder... if stagnation may have also been a fac...I wonder... if stagnation may have also been a factor in Python eating away at PERLs dominance in its domain. PERL 6 has taken such a long time to materialize, and the 5 line hasn't been overly active until recently. Perhaps this lack of change in the PERL line left an opening for any new or frequently updated language to take hold where it might not otherwise have been able to. On an only semi-related note, I also wonder if fundamental hardware changes could impact a new language's abaility to overtake the current dominant language in a particular domain. For example, if Scala or some other language came along and made it vastly easier to program for concurrency - coupled with the rapid increase in the number of processors/cores on the average computer - could this displace Java?Natehttps://www.blogger.com/profile/16219989555722635745noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-8386935650227948352010-05-16T11:45:41.801-07:002010-05-16T11:45:41.801-07:00@Jeff Satterley: No, Lisp is still the greatest la...@Jeff Satterley: No, Lisp is still the greatest language ever created.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-76518190231353827462010-05-15T23:24:51.420-07:002010-05-15T23:24:51.420-07:00i would also like to add that a language such Ruby...i would also like to add that a language such Ruby ( considered as a scripting language ) might not get such a huge base of programmers but somehow it can be integerated in a program thats written in the major languages such C/C++ , such that its used for configuration for instance , that way people use ruby with[out] noticing, my point is a new language does not have to ride on a new platform ( as in OS if you mean that ) but also to ride a famous application written in one of the major languages.Unknownhttps://www.blogger.com/profile/05908295341143357293noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-10115796980350779482010-05-15T17:59:09.905-07:002010-05-15T17:59:09.905-07:00The cgi rfc (3875) which defines the interaction b...The cgi rfc (3875) which defines the interaction between a browser and web server is a literal extension of the unix command line.patsplathttps://www.blogger.com/profile/04091666538475273376noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-25951476423681001632010-05-15T14:27:47.444-07:002010-05-15T14:27:47.444-07:00> Nobody has figured out how to make cross-lang...> Nobody has figured out how to make cross-language interoperability work well.<br /><br />Having two languages co-hosted on the JVM means language interop can be fairly trivial. This is why Clojure has gone so far despite being barely two years old--it's effortless to leverage the huge corpus of existing JVM libraries.Philhttps://www.blogger.com/profile/17329476802397229445noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-7332875315429296562010-05-15T03:25:34.616-07:002010-05-15T03:25:34.616-07:00Where do C# and the .NET framework fit into the th...Where do C# and the .NET framework fit into the this analysis?<br /><br />C++ was indeed the dominant language for Windows development, but it has been largely displaced by C#.<br /><br />Surprisingly, C# has also displaced Visual Basic, which was very widely used whenever an 'application' was actually a GUI sitting over components written in C++. C# is technically superior to VB, by a wide margin - indeed a vast gulf when you consider inheritance - but there are very few languages with VB's ease of use for the part-time and intermediate-level programmer.Nigel Heffernanhttps://www.blogger.com/profile/08954578765691578714noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-29345191776286957022010-05-14T21:07:17.410-07:002010-05-14T21:07:17.410-07:00In response to "constance eustace":
TCP...In response to "constance eustace":<br /><br />TCP/IP are not "part" of HTTP/HTML. HTTP relies on a TCP connection. IP and TCP were developed first and became the predominant mode of internet communication. Not just for the web, but for nearly all distributed systems. TCP/IP is even more widespread than HTTP/HTML. If the author wants to lump protocols together, then generalizations should be made about TCP/IP, not HTTP/HTML.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-75384963765235868862010-05-14T18:38:02.703-07:002010-05-14T18:38:02.703-07:00Java did ride a platform to success. Java replace...Java did ride a platform to success. Java replaced *COBOL* and, from there, became the "enterprise" web language.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-65973347845678616782010-05-14T15:08:04.266-07:002010-05-14T15:08:04.266-07:00I moved from perl to python. Python i smuch better...I moved from perl to python. Python i smuch better in a team environment or if you want to write legible code that others can work on. Perl object orientation is nasty to boot.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-26885871047300444902010-05-14T11:57:45.884-07:002010-05-14T11:57:45.884-07:00- TCP IPv4 etc are all part of the HTTP/HTML origi...- TCP IPv4 etc are all part of the HTTP/HTML originally mentioned. Author was keeping it simple<br /><br />- Java rode its own cross-computer platform: the JVM, enabling windows, linux, and *nix development across the board.<br /><br />- The cloud is still a web platform, so no language will dominate it<br /><br />- the new platform that matters is the smartphone OS, so it is currently android and ObjC/iPhone battling that out.constance eustacehttps://www.blogger.com/profile/10766996152700797287noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-52681735691772219472010-05-14T11:10:30.674-07:002010-05-14T11:10:30.674-07:00Another cross platform language would be SQLAnother cross platform language would be SQLAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-81765943853572146442010-05-14T10:46:33.270-07:002010-05-14T10:46:33.270-07:00I agree. I also think Java is less of an exception...I agree. I also think Java is less of an exception than you say: Java runs on the "web platform", which happens to encompass both browsers and servers. But part of Java's success was also the pent-up frustration with C++, which was poorly suited for large-scale business application programming. What about Ruby?Jonathan Edwardshttp://alarmingdevelopment.orgnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-20963352960134044412010-05-14T10:17:39.011-07:002010-05-14T10:17:39.011-07:00Why did Python displace Perl instead of Ruby? Is P...Why did Python displace Perl instead of Ruby? Is Python better designed?<br /><br />One issue to consider is that the Ruby culture tends to be looser and more anti-corporate, whereas python suffers no such drawback.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-58128896253171415322010-05-14T09:59:50.040-07:002010-05-14T09:59:50.040-07:00This seems like it would be extremely difficult.
e...This seems like it would be extremely difficult.<br /><a href="http://www.electroniccigarettesinc.com" rel="nofollow">electronic cigarette</a>ReputatedBeliefhttps://www.blogger.com/profile/12606988036392834947noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-2788405828645997832010-05-14T09:29:36.881-07:002010-05-14T09:29:36.881-07:00If you are correct - than Erlang might have pretty...If you are correct - than Erlang might have pretty good chances. The current emerging platform is "The Cloud" along with all the "NoSQL scale-at-will" solutions and if you look at them there are quite a few being written in Erlang (CouchDb, Riak, RabbitMQ, ejabberd...).Emil Ivanovhttps://www.blogger.com/profile/17970241476759446937noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-6239980780905756422010-05-14T09:22:25.410-07:002010-05-14T09:22:25.410-07:00When the Macintosh first arrived, the programming ...When the Macintosh first arrived, the programming language and API of choice was Pascal as documented by Apple in the original SDK. This later was displaced by C in documentation and practice around the time Lightspeed C and later Metrowerks became available.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-29009603466726843982010-05-14T08:40:17.827-07:002010-05-14T08:40:17.827-07:00It's worth pointing out that Ruby has already ...It's worth pointing out that Ruby has already attached itself to a popular new platform, and you're right -- that's the reason for the vast majority of its success at this point.<br /><br />Not that I think it'll ever rival C++ for popularity or anything. But I agree, Ruby won't go away as long as Rails doesn't go away, which looks to be for awhile here.Noah Gibbshttp://blog.angelbob.comnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-82273719723045816252010-05-14T08:22:55.780-07:002010-05-14T08:22:55.780-07:00Other protocols which have managed to connect dive...Other protocols which have managed to connect diverse software components even more successfully: IPv4, TCP, UDP. IPv4 was so good at this purpose that it has become ubiquitous. <br /><br />These days an operating system is not complete unless it includes a TCP/IP stack whereas it is acceptable not to include an HTTP server for the majority of users.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-15089244025652810972010-05-14T08:20:14.283-07:002010-05-14T08:20:14.283-07:00I see that python is slowly replacing perl, but ru...I see that python is slowly replacing perl, but ruby is also helping against perl.<br /><br />Personally, I use ruby.<br /><br />Perl came to popularity ages ago with hardly any competitor back then. <br /><br />Nowadays you have so many languages hitting on good old perl ...<br /><br />The reason I think ruby rocks is because it is beautiful.<br /><br />Python is beautiful too, but not as beautiful as ruby. Ruby feels like an art, creativity - and there is more than one way to do it means you can be more creative as well.shevyhttps://www.blogger.com/profile/09636171104216432368noreply@blogger.comtag:blogger.com,1999:blog-5621024.post-77479985555046800712010-05-14T07:57:55.877-07:002010-05-14T07:57:55.877-07:00do you consider the JVM or .net as a next platform...do you consider the JVM or .net as a next platform?tcchttp://tommy.chheng.comnoreply@blogger.comtag:blogger.com,1999:blog-5621024.post-47446204964449760932010-05-14T07:46:17.962-07:002010-05-14T07:46:17.962-07:00Does that mean Python is the greatest language eve...Does that mean Python is the greatest language ever created?! I knew it!Jeff Satterleyhttps://www.blogger.com/profile/00925977103795446172noreply@blogger.com