Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.os.vms    |    DEC's VAX* line of computers & VMS.    |    264,096 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 263,916 of 264,096    |
|    =?UTF-8?Q?Arne_Vajh=C3=B8j?= to All    |
|    DCL2    |
|    05 Dec 25 21:41:47    |
      From: arne@vajhoej.dk              Context       -------              1)              My opinion is that DCL:       * is fine for interactive use       * is fine for small scripts (5-25 lines with at most a few lexical        functions, a few if statements and 'Pn' usage       * is not up to expectations for writing large scripts aka        programming in DCL              One can argue that DCL should not be used for programming, but fact       is that it is used that way.              So what is missing for programming? I would say biggest       items are:       * loops       * switch/case       * arrays       * user defined lexicals              2)              Shell capabilities does not sell systems today. Users are not doing       shell at all. Programmers work mostly on PC's. Only system managers are       still doing a lot of shell work and their shell experience is not likely       to determine platform decisions.              So VSI cannot justify investing a lot of money in a new shell, because       there is no business case.              3)              The vast majority of future VMS system managers will have experience       with alternative scripting languages that actually are available on VMS.       Most notable bash (GNV) and Python, but there are other: I like Groovy,       there may still be some that like Perl etc. So future DCL programming       will mostly be enhancing existing COM file done by existing VMS system       managers.              This mean VSI cannot break backwards compatibility for DCL - whatever       ran in 1985 has to run the exact same way today.              4)              According to many years of internet gossip, then the DCL code base       is very difficult to enhance, because it is Macro-32 and very tricky       Macro-32 that is. The last big language change was probbaly       if-then-else-endif in 1988.              VSI cannot start classic evolution process of adding new features       to DCL over time.              What to do?       -----------              A totally new shell with a new syntax is not a solution:       * the oldtimers want DCL       * the newcomers want standard (bash, Python etc.)       * expensive              A reimplementation of DCL in C (or another language, but C is       probably the current preference) is not a solution:       * risk only achieving 99.9% compatiblity instead of 100% compatibility       * expensive              What I see left is the "RATFOR approach" (in this century it should       probbaly be called "transpiling approach", but I suspect more people       here know about RATFOR than all the transpiling to JavaScript being       done today). Pre-processing extended DCL to old DCL.              Convert loop constructs to goto's and labels. Convert switch/case to       if's. Convert arrays from name[ix] to name_'ix'. Add a syntax for       declaring user defined lexicals from shareable images and translate       usage to call of UDL utility that calls functions in shareable       image and return value in symbol that is then used.              This should by design ensure 100% compatibility. Anything not new       will be left unchanged and processed by todays DCL.              And due to the fixed format and relative simplicity of of DCL then       I suspect that the pre-processor would not be that bad to implement.       But of course I could be wrong.              Preprocessing would obviously only work before symbol substitution.              $ a[1] = 123              works.              $ b1 = "["       $ b2 = "]"       $ a'b1'1'b2' = 123              does not work.              It could be implemented different ways.              A) On the fly              $ @@foobar              will preprocess foobar.xcom into memory and let DCL read from that memory.              B) Separate step              $ dcl2 foobar              converting foobar.xcom to foobar.com and:              $ @foobar              I am wondering maybe something like this has already been done and       are on one of the DECUS tapes.              Arne              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca