If you doubt how silly it is to offer Russian translations without the options of "stress" marks, just read the Amazon customer reviews of Kristine Kershul's "Russian in 10 Minutes a Day" which has gone through more than one printing.
In Russian, lexical homonyms - words appearing to be spelled the same - are not homophones and often not even cognates. In English you might have "Cut a record" versus "Record a disk". I believe that in most English dialects, the stress shifts for the noun as opposed to the verb. In Russian, two such words could have entirely unrelated meanings, rather like "Tie a bow" and "Bow down before the king"
In English, it suffices to offer a phonetic equivalent to capture the difference. Not so in Russian. Russian requires that you know the stress mark.
If you check the articles on some Russian persons of note at en.wikipedia.org you should be able to see how often stress marks are being used.
In the past, in order to present stress, you required a separate font, such as that sometimes still used at russian.cornell.edu
Since the advent of UNICODE stress marks, all that is required is to add an optional stress character after a vowel in the stressed syllable.
Just how silly this is at google translate can be seen by attempting to translate "opera and ballet" from English to Russian. All is fine unless you intend to use these words in conversation. Clicking on the "romanization" button is to no avail.
Sometimes a "phonetic romanization" will tell the story for those Russian vowels which are reduced when they do not occur in the stressed syllable. One Russian variant of E - E with a diacritic trema - only occurs in a stressed syllable. But by and large, if you want to pronounce a Russian word that has more than one syllable, you must know where to place the stress accent. Otherwise it can be more serious than simply placing the emPHAsis on the wrong sylLABle.
Of course, even last week, GMAIL spell-check rejecting "opthamologist" and "romanization" (also flagged in the editor here at blogger.com) is silly but does not render the tool next to useless.
Tuesday, February 9, 2010
Monday, December 21, 2009
strongtalk Smalltalk: a new release
There is a new release of the strongtalk variant of Smalltalk at code.google
The story behind the Strongtalk team, Sun, Self, Netscape and Javascript is somewhat painful.
But thanks to the work of David Griswold we have a new Windows executable, a Mac OSX executable and easy builds on linux with gcc.
If you know anything about Smalltalk (or even the Tcl IDE bult in XOTcl) you will want to see the visionary strongtalk browser (especially if you have seen live code edits in Seaside web pages.)
Work also progresses on Self, the Sun LivelyKernel and Clean Slate Smalltalk. Likely we are just plain lucky that Self and strongtalk escaped into open-source before Oracle acquired Sun.
Other recent Smalltalk notables: Cincom Web Velocity, Squeak Pharo, Iliad, Aida.
Notable Smalltalk-and-Actor inspired innovation: Io, the language.
The story behind the Strongtalk team, Sun, Self, Netscape and Javascript is somewhat painful.
But thanks to the work of David Griswold we have a new Windows executable, a Mac OSX executable and easy builds on linux with gcc.
If you know anything about Smalltalk (or even the Tcl IDE bult in XOTcl) you will want to see the visionary strongtalk browser (especially if you have seen live code edits in Seaside web pages.)
Work also progresses on Self, the Sun LivelyKernel and Clean Slate Smalltalk. Likely we are just plain lucky that Self and strongtalk escaped into open-source before Oracle acquired Sun.
Other recent Smalltalk notables: Cincom Web Velocity, Squeak Pharo, Iliad, Aida.
Notable Smalltalk-and-Actor inspired innovation: Io, the language.
Labels:
LivelyKernel,
Self,
Slate,
Smalltalk,
strongtalk
Saturday, December 19, 2009
while ( write( read(resource) ) ) # no ;
#pragmatic programming
while(write(read())) may not be as succinct as the equivalent expression in Rebol, but this Icon expression - which composes correctly in ObjectIcon, UNICON, Converge and ICON itself - has an important property: it can fail and its failure is neither an exception nor an error. And until it fails, it succeeds.
Yet for all the pragmatic programmer interest in languages such as Erlang and Clojure, Icon seems to attract no interest at all (judging from activity at the code.google pages for ObjectIcon.)
Indeed, the apparent disappearance of goto as a reserved word in JavaScript-family languages (except DMDScript, where goto is implemented) would seem to indicate that the Algol-like syntax of the replacement for SNOBOL may never get the attention it deserved. GOTO is now masked as throw and try/catch and break-to-tag and the "resume-elsewhere-as-resume-next" of Icon failure may remain unknown to another generation of programmers.
When I last looked, goto remained an unused reserved word of Java, just as it was of JavaScript. For programmers who never worked with Prolog back-tracking, the idea that boolean expressions evaluate to TRUE or FALSE may seem a truism. But it remains the case that a great deal of the internet, for one striking example, depends on all manner of objects deemed "empty" to default in boolean expressions to an evaluation as FALSE.
Just as it was false that SNOBOL would never be performant (SPITBOL put that to rest but too late), so it was false that GOTO is always dangerous (and useful long jumps in C are still with us.)
There is a useful word in German, Aufhebung, which does not always translate cleanly into English: but it might be the one word to capture the response of Icon to the challenges laid before SNOBOL by Algol, Fortran, Pascal and C.
You need only consider that recent languages as advanced as Java, C#, Curl, ECMAScript, Python and Scala continue to use Regular Expressions as if there had never been a programmers' tool which was an alternative to Perl. PCRE is now an acronym if not also a shibboleth.
Icon was intended for non-computer scientists to use just as was SNOBOL before it, but even an MIT language intended for visual artists, Processing of proceessing.org, continues to advise its users to learn regexp.
Perhaps the release of ICON 9.5 (under the guidance of an award-winning CS teacher and mentor) will attract some attention. Or the future release of pythonic Converge 2.0
But I have my doubts. Perhaps it will come when an HP innovator looks at available languages for new help center software for help desks in Africa. Perhaps the interest will come from Latvia or western China. In any other area of applied science, the likes of regexp would have been gone. But we have yet to fall under the spell of some great offering us the dictum "RegExp considered harmful".
while ( write( read( responseStream ) ) )
# idiom, semi-colon terminator optional
PS
Icon: generators, iterators, practical co-routines, goal-directed evaluation, expression-based language (Carl Sturtivant, G. Townsend with others)
ObjectIcon: UNICODE Icon with classes (Robert Parlett)
Converge: pythonic Icon (Laurie Tratt)
Rebol: www.rebol.net, www.rebol.org, www.rebol.com (from Carl Sassenrath and team; now in alpha for REBOL 3 with closures and modules)
Curl: Clojure-like homiconic web content language with macros, closures, optional types and permiting scoped tags within iteration macros to facilitate expressions such as the macro {for tag=outer permitting {break tag=outer}
Yet for all the pragmatic programmer interest in languages such as Erlang and Clojure, Icon seems to attract no interest at all (judging from activity at the code.google pages for ObjectIcon.)
Indeed, the apparent disappearance of goto as a reserved word in JavaScript-family languages (except DMDScript, where goto is implemented) would seem to indicate that the Algol-like syntax of the replacement for SNOBOL may never get the attention it deserved. GOTO is now masked as throw and try/catch and break-to-tag and the "resume-elsewhere-as-resume-next" of Icon failure may remain unknown to another generation of programmers.
When I last looked, goto remained an unused reserved word of Java, just as it was of JavaScript. For programmers who never worked with Prolog back-tracking, the idea that boolean expressions evaluate to TRUE or FALSE may seem a truism. But it remains the case that a great deal of the internet, for one striking example, depends on all manner of objects deemed "empty" to default in boolean expressions to an evaluation as FALSE.
Just as it was false that SNOBOL would never be performant (SPITBOL put that to rest but too late), so it was false that GOTO is always dangerous (and useful long jumps in C are still with us.)
There is a useful word in German, Aufhebung, which does not always translate cleanly into English: but it might be the one word to capture the response of Icon to the challenges laid before SNOBOL by Algol, Fortran, Pascal and C.
You need only consider that recent languages as advanced as Java, C#, Curl, ECMAScript, Python and Scala continue to use Regular Expressions as if there had never been a programmers' tool which was an alternative to Perl. PCRE is now an acronym if not also a shibboleth.
Icon was intended for non-computer scientists to use just as was SNOBOL before it, but even an MIT language intended for visual artists, Processing of proceessing.org, continues to advise its users to learn regexp.
Perhaps the release of ICON 9.5 (under the guidance of an award-winning CS teacher and mentor) will attract some attention. Or the future release of pythonic Converge 2.0
But I have my doubts. Perhaps it will come when an HP innovator looks at available languages for new help center software for help desks in Africa. Perhaps the interest will come from Latvia or western China. In any other area of applied science, the likes of regexp would have been gone. But we have yet to fall under the spell of some great offering us the dictum "RegExp considered harmful".
while ( write( read( responseStream ) ) )
# idiom, semi-colon terminator optional
PS
Icon: generators, iterators, practical co-routines, goal-directed evaluation, expression-based language (Carl Sturtivant, G. Townsend with others)
ObjectIcon: UNICODE Icon with classes (Robert Parlett)
Converge: pythonic Icon (Laurie Tratt)
Rebol: www.rebol.net, www.rebol.org, www.rebol.com (from Carl Sassenrath and team; now in alpha for REBOL 3 with closures and modules)
Curl: Clojure-like homiconic web content language with macros, closures, optional types and permiting scoped tags within iteration macros to facilitate expressions such as the macro {for tag=outer permitting {break tag=outer}
Thursday, December 17, 2009
PHP nanoweb on Ubuntu
I was restarting the latest Ubuntu PHP nanoweb on my netbook when I saw a shell script error message. A run through the file nanoctl in my /usr/sbin revealed a few issues - particular if trying to use the simple status option. To make matters worse, the script is hard-coded with "lynx" as the browser name - while my Ubuntu defaults to Galeon (but I prefer Epiphany.)
If you care to look over an alternative, I have a version with extension .sh over at aule-browser.com
The edited version is set for the Gnome Epiphany browser for linux - you may wish to edit the BROWSER var. Note that the /usr/sbin/nanoweb file is what is commonly referred to as nanoweb.php
Like PHP programming, unix shell scripting sometimes can be a somewhat arcane art.
If you care to look over an alternative, I have a version with extension .sh over at aule-browser.com
The edited version is set for the Gnome Epiphany browser for linux - you may wish to edit the BROWSER var. Note that the /usr/sbin/nanoweb file is what is commonly referred to as nanoweb.php
Like PHP programming, unix shell scripting sometimes can be a somewhat arcane art.
Thursday, December 3, 2009
Curl Open source at sourceforge.net
Over at developers.curl.com I have posted the links to Curl open source projects which are from curlap.com in Japan which are found at code.google.com
The project home page at Google with the links is The Curl ORB home page at code.google.com/p/curl-orb
These projects are typically shy of being 1.0 releases.
At the moment they are as follows:
Curl Non-visual Libs
Extended components for Curl language, such as String utility, collection utility, UI utility, logging, log-rotate, data caching, encrypt/decrypt and such.
Curl Sonntag MVC Framework
Curl Sonntag is a simple MVC framework for Curl.
Curl Advanced UI
Advanced User Interface libraries provide components necessary for creating rich user interface applications easily. (for details see this blog post at developers.curl.com)
Curl ORB
Curl ORB is to communicate between Curl and server side Java. It can generate Curl source code from POJO (Plain Old Java Objects), and invoke the Java methods on the server-side from Curl client-side applications.
There is also a new External Libraries project from curl.com in Cambridge, MA, and I will post a note on that open source package when it is out of alpha.
The project home page at Google with the links is The Curl ORB home page at code.google.com/p/curl-orb
These projects are typically shy of being 1.0 releases.
At the moment they are as follows:
- Curl ORB 0.7
- Curl Advanced UI 0.6
- Curl Sonntag MVC 0.7
- Curl Non-visual Libs 0.7
Curl Non-visual Libs
Extended components for Curl language, such as String utility, collection utility, UI utility, logging, log-rotate, data caching, encrypt/decrypt and such.
Curl Sonntag MVC Framework
Curl Sonntag is a simple MVC framework for Curl.
Curl Advanced UI
Advanced User Interface libraries provide components necessary for creating rich user interface applications easily. (for details see this blog post at developers.curl.com)
Curl ORB
Curl ORB is to communicate between Curl and server side Java. It can generate Curl source code from POJO (Plain Old Java Objects), and invoke the Java methods on the server-side from Curl client-side applications.
There is also a new External Libraries project from curl.com in Cambridge, MA, and I will post a note on that open source package when it is out of alpha.
Labels:
Curl,
open source
Wednesday, November 18, 2009
Learning Curl: {value expr} and Curl as an expression-based language
One thing that I have noticed in C# and Java programmers learning Curl is that if they rely on one of the available books (and even to some extent if they use the on-line Curl resources) there is a puzzle about {value some-expression} code blocks.
Here is an example from a book on Curl:
In keeping with the Gentle Slope approach to reduce the steepness of the Curl learning-curve, the text
We say that this bit of text is at the top-level.
What follows, however, is an expression within curly braces and what we want to display is the result of that addition of the two Time quantities. We could have written this expression using optional parentheses as
To show that this is so, consider this alternative:
Here is another alternative using assignment to a variable named tos:
The time in seconds equals 2.5056e+006s
Time quantity in the variable is 2.5056e+006s
Number of days: 29
A more compact version of the applet using explicit {br} line formatting rather than relying on Curl to display the extra new lines might have been:
And so we proceed to wend our way up the 'Gentle Slope' of Curl.
Here is an example from a book on Curl:
{value 2fortnights + 1day}
This an example of a Curl expression in which quantities are added (note the optional use of the plural for the user-defined quantity.){curl 7.0 applet}
{let public constant fortnight:Type = {type-of 14days}}
time in seconds is {value 2fortnights + 1day}
{let public constant fortnight:Type = {type-of 14days}}
time in seconds is {value 2fortnights + 1day}
In keeping with the Gentle Slope approach to reduce the steepness of the Curl learning-curve, the text
time in seconds is
appears in the browser as text. We say that this bit of text is at the top-level.
What follows, however, is an expression within curly braces and what we want to display is the result of that addition of the two Time quantities. We could have written this expression using optional parentheses as
{value (2fortnights + 1day) }
The {value } macro has been used to return a value: that is all. To show that this is so, consider this alternative:
{String (2fortnights + 1day) }
The default constructor for the String class also returns a value (an instance of a String.)Here is another alternative using assignment to a variable named tos:
{let tos:Time = 2fortnights + 1day}
The Time value held in the variable is {String tos}
And finally a complete alternative applet:The Time value held in the variable is {String tos}
{curl 7.0 applet}
{let public constant fortnight:Type = {type-of 14days}}
{let tos:Time = 2fortnights + 1day}
The time in seconds equals {value 2fortnights + 1day}
Time quantity in the variable is {String tos}
Number of days: {format "%.0f", (tos / 1day)}
which displays in the browser as follows:{let public constant fortnight:Type = {type-of 14days}}
{let tos:Time = 2fortnights + 1day}
The time in seconds equals {value 2fortnights + 1day}
Time quantity in the variable is {String tos}
Number of days: {format "%.0f", (tos / 1day)}
The time in seconds equals 2.5056e+006s
Time quantity in the variable is 2.5056e+006s
Number of days: 29
A more compact version of the applet using explicit {br} line formatting rather than relying on Curl to display the extra new lines might have been:
{curl 7.0 applet}
{let public constant fortnight:Type = {type-of 14days}}
{let tos:Time = 2fortnights + 1day}
The time in seconds equals {value 2fortnights + 1day} {br}
Time quantity in the variable is {String tos} {br}
Number of days: {format "%.0f", (tos / 1day)}
{let public constant fortnight:Type = {type-of 14days}}
{let tos:Time = 2fortnights + 1day}
The time in seconds equals {value 2fortnights + 1day} {br}
Time quantity in the variable is {String tos} {br}
Number of days: {format "%.0f", (tos / 1day)}
And so we proceed to wend our way up the 'Gentle Slope' of Curl.
Labels:
Curl,
expression,
format,
Gentle Slope,
Java,
macro,
quantity,
Time,
top-level,
value
Wednesday, November 4, 2009
What's new in what was once Borland Turbo Prolog?
PDC Visual Prolog has a page on what's new in 7.2
What stood out for me was anonymous predicates or "nameless clauses" as the Prolog response to "anonymous functions".
If you are interested in Tokyo Cabinet, you might want to glance back at PDC over the years and their features offering internal and external databases. While I have been more excited about XSB and Logtalk in recent years, I have always enjoyed working in PDC.
There is something of an equivalent PROLOG in the Mercury project: both are distinctive in having a type system and in how they track determinism. Both PDC and Mercury would like to appeal to programmers with a hankering for a functional style.
There are many active Prolog projects: the SWI-Prolog project is likely the most active in opensource and offers RDF parsing - somewhat different from that offered by XSB.
It is odd that with all the interest in Joe Armstrong and Erlang that there seems to be no up-tick in interest in Prolog and Constraint Logic Programming: the acquisition of ILog by IBM and the move of Drools into JBoss seem not to float any other boats.
Like Prologia (Prolog IV) in France, PDC now focuses on their software application offerings and not the language - but you wonder what would have happened if Apple or Microsoft had offered a Prolog to compete with Borland back in the late 80's ... but you could say the same of Smalltalk (in fairness, Apple's Objective-C is like Smalltalk and for some time Apple was home to some Smalltalk researchers.) At least PROLOG never suffered the fate of Self and Strongtalk at the hands of SUN.
PDC was an early advocate of DSL's (Domain Specific Languages) but I do not know if these feature prominently in their own commercial packages.
Meanwhile, over at Strawberry Prolog a Windows prolog has been in a Beta for version 3.0 for almost a year: it was to contain a major innovation in the design of Prolog compilers, but I am still back at 2.9.2
If you like Eclipse, you might like AMZI Prolog 8 which comes as an Eclipse environment. Amzi! is a pleasure to use and has great documentation if you have been away from logic programming for awhile. But there are other options for Prologs which interface with Java and many "small" prolog interpreters about.
One way to glimpse which Prolog implementations are active is to see which are supported by Logtalk - but that would exclude some of those which come with their own OOP frameworks .. such as PDC.
For other recent changes in PROLOG, see xsb.com and XSB at sourceforge.
If you are tracking any other PROLOG innovations, please add a comment and a link. I have a note on Distributed Oz 1.4.0 elsewhere ...
What stood out for me was anonymous predicates or "nameless clauses" as the Prolog response to "anonymous functions".
If you are interested in Tokyo Cabinet, you might want to glance back at PDC over the years and their features offering internal and external databases. While I have been more excited about XSB and Logtalk in recent years, I have always enjoyed working in PDC.
There is something of an equivalent PROLOG in the Mercury project: both are distinctive in having a type system and in how they track determinism. Both PDC and Mercury would like to appeal to programmers with a hankering for a functional style.
There are many active Prolog projects: the SWI-Prolog project is likely the most active in opensource and offers RDF parsing - somewhat different from that offered by XSB.
It is odd that with all the interest in Joe Armstrong and Erlang that there seems to be no up-tick in interest in Prolog and Constraint Logic Programming: the acquisition of ILog by IBM and the move of Drools into JBoss seem not to float any other boats.
Like Prologia (Prolog IV) in France, PDC now focuses on their software application offerings and not the language - but you wonder what would have happened if Apple or Microsoft had offered a Prolog to compete with Borland back in the late 80's ... but you could say the same of Smalltalk (in fairness, Apple's Objective-C is like Smalltalk and for some time Apple was home to some Smalltalk researchers.) At least PROLOG never suffered the fate of Self and Strongtalk at the hands of SUN.
PDC was an early advocate of DSL's (Domain Specific Languages) but I do not know if these feature prominently in their own commercial packages.
Meanwhile, over at Strawberry Prolog a Windows prolog has been in a Beta for version 3.0 for almost a year: it was to contain a major innovation in the design of Prolog compilers, but I am still back at 2.9.2
If you like Eclipse, you might like AMZI Prolog 8 which comes as an Eclipse environment. Amzi! is a pleasure to use and has great documentation if you have been away from logic programming for awhile. But there are other options for Prologs which interface with Java and many "small" prolog interpreters about.
One way to glimpse which Prolog implementations are active is to see which are supported by Logtalk - but that would exclude some of those which come with their own OOP frameworks .. such as PDC.
For other recent changes in PROLOG, see xsb.com and XSB at sourceforge.
If you are tracking any other PROLOG innovations, please add a comment and a link. I have a note on Distributed Oz 1.4.0 elsewhere ...
Labels:
Logtalk,
Mercury,
PDC,
PROLOG,
Stawberry Prolog,
Visual Prolog,
XSB
Subscribe to:
Posts (Atom)