Why exporting to latex, html and markdown is not enough for you ?
On Fri, Oct 13, 2017 at 1:05 PM Gour <[hidden email]> wrote: On Wed, 11 Oct 2017 17:18:54 +0000 |
In reply to this post by aglynn42
Thanks for the insight Andrew , I heard of VisualAge Smalltalk but not of C++ and Java, very interesting :)
On Fri, Oct 13, 2017 at 1:44 PM Andrew Glynn <[hidden email]> wrote:
|
In reply to this post by kilon.alios
On Fri, 13 Oct 2017 10:43:27 +0000
Dimitris Chloupis <[hidden email]> wrote: > Why exporting to latex, html and markdown is not enough for you ? Well, I usuallyconsider latex/html as more suitable as output formats, while standard markdown is semantically too poor for input format, but I'll test how Pillar's outputs are suitable as Pandoc's inputs. Sincerely, Gour -- It is far better to discharge one's prescribed duties, even though faultily, than another's duties perfectly. Destruction in the course of performing one's own duty is better than engaging in another's duties, for to follow another's path is dangerous. |
In reply to this post by kilon.alios
I agree with you that difficulty is half the fun, assuming you're a developer - developers solve problems, so if there weren't any we'd be a bit out of luck. For myself I've somehow never, in a 26+ year career, worked on maintaining code. I've only ever written new code. in fact I usually wind up with the things nobody, me included, has a clue of how to do, tending to make them even more difficult. On a project last year the 'technical unknowns' could be boiled down from the 5 page document I was given to one word, 'everything', including what the customer (the government, unsurprisingly), actually meant by any of the terms used in the requirements, since even common networking terms like VPN mean something different to government employees, apparently, than to anyone else in the world. It's rewriting the same or incredibly similar rote code because we start from the same basic point on every project that gets on my nerves; writing new and often difficult code, or learning new and often difficult languages, even learning unfamiliar domain specific terminology, are the reasons I'm still a developer. Difficulty though ought to come with a bit of power. JavaScript can be extremely difficult, but when it's difficult and the result is that a page widget appears in the right place, it doesn't feel like much of an accomplishment. Electron apps can be difficult, though the difficulty isn't in writing them, but in building them and getting them to actually run, especially if you're supporting Mac as well as Windows. Unless I'm writing a VM (which I haven't done very much of at all) the difficulties with CLANG, SLANG, along with about a dozen other tools, just to build a simple application, doesn't feel like much of an accomplishment either. At least not to me, I guess it does to some people though. I have noticed a squeaky wheel effect: technologies that 'just work' get quickly forgotten, because there aren't 3 million people on slashdot or wherever asking questions about how to get them to work. JINI (now Apache River) is a good example (especially in Java, where not much 'just works'), when the new cars that automagically connect your cell phone and tablet to their own 4G were designed, they had to write JINI clients for C and whatever other languages they use, because that's what does all the automagic. But not many people even remember it exists. One thing I do disagree with you on is that people prefer Windows. It seems to me that Windows is more popular due to price, and maybe due to the relative ease of controlling access centrally, more than anything, and even given the lower prices on (at least as far as obvious specs go) equivalent machines, I can't think of anyone I know off the top of my head who would use Windows if they could afford a Mac, and everyone I know who can, does use one. I had to write a Mac app for Charles Schwab that would run on any home Mac (down to G4 based Macs with a half gig of RAM that could run at best OS X 10.5) with equivalent features to a Windows app that required 16GB RAM to load and 24GB to run decently, because the majority of the professional stock traders who use Windows all day at work have Macs at home (of course they can largely afford them). If I'm not developing or testing I admittedly most often use a Macbook myself. I do use Windows on my tablet, since it can run a full version of Win 10 x64 (not the useless RT version) and therefore nearly any Windows program. I won the tablet at HP at the xmas party though, and with a quad-core Atom CPU and 8GB RAM it's not really an average tablet. Even then, I only use it if stuck somewhere for a while with nothing to do. So I have to admit, if I'm not developing I don't enjoy difficulty much. Nor do most of the end users I know. I do know a few masochists who prefer Linux to Mac, most of whom don't run a UI. The few who do use MATE, which while being both ugly and lacking any notable capabilities, never mind applications, doesn't use much memory. Exactly why a third of a GB of RAM is relevant today I'm not sure, when both Atom and Sublime Text use more memory than Ubuntu, Kubuntu or OS X for that matter, but they seem to feel it's radically important. Sublime Text makes me think of Hegel's definition of The Sublime: "the night where all cows are black" ☺. I'll use Linux if my Thinkpad is handier. It runs OEL with KDE, so it's not difficult (unless you want anything by Adobe, lol), and it's pretty quick. Though ironically the Macbook is still quicker, though it has half the RAM and an i7 that's 2 generations older. I visited a friend at the IBM lab I used to work at a few months ago, and since they know me pretty well at security, I had no problem getting a visitor badge. Walking through the area where they write among other things, DB2 UDB, InfoSphere, WebSphere and associated products, and all of ibm.com I glanced in the cubicles as I went to my friend's desk, and the majority of the developers were using Macbooks. The only people with Thinkpads were managers. So maybe developers like difficulty, but not quite as much with things that are supposed to be already developed. It could just be easier to give them Macbooks than to try to get security to let them have local admin rights on Windows ... Best quote I've seen on Windows, particularly given the source: "With luck, this will start Windows, and a dialogue box will appear and tell you the default drive onto which IADS will be installed. If Windows doesn't start up, you could always try launching Windows manually." - IADS Manual, U.S. Army. Since IADS requires Windows 7 at minimum, exactly how you 'launch it manually' is beyond me, but then again I'm not in the military, and they seem to be able to write software in ADA (software that runs, even). Although the Army writes IADS, it's used by virtually every government department, not only in the U.S. but in Canada as well - it's AFAIK the only open source, free, true WYSIWYG SGML editor, and given FrameMaker is $999 a license, free becomes relevant when you have a lot of employees. It has to have the worst name of any software in the world, excepting maybe Eclipse VIATRA. cheers Andrew Glynn -----Original Message----- Date: Fri, 13 Oct 2017 07:00:46 +0000 Subject: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk To: Any question about pharo is welcome <[hidden email]> Reply-to: Any question about pharo is welcome <[hidden email]> From: Dimitris Chloupis <[hidden email]>
****WARNING LONG POST AHEAD**** There numerous reason why this kind of thinking is fundamental flawed, if not completely wrong 1) How you get people to run in this race ? 2) What makes you think that people participating in the race doing to get first or even finish ? 3) How you are certain that those barriers are not the very reason people participate ? The fundamental problem is that if you base your assumption that people are motivated on avoidance of pain, this is a very popular argument by the way, you going to be severely disapointed. From the very first fact that there is a 90% chance that right now that you use almost 100% of your time one of the worst software to be ever created. Microsoft Windows. Of course you can throw claims to me that peope use Windows because that is what's popular and widely available, but then so is MacOS is by far the easiest to use OS out there. When you pit Windows vs Macos a such taboo subject , fuel to so many flame wars, there is one thing that both sides agree on and that is that MacOS is far easier to use , perdiod. The rest of the debate which OS is the best is up in the air and frankly not the point of my argument. The fact is , we love pain, we love barriers, we love doors that slam into our face. We love challange. But only if we find it interesting. Of course Windows is not the only example (C/C++ , Java , Web dev, computer games and the list is just endless)of the machocistic nature of human beings. I dont need to look far, my own story about how I started coding is more than enough . I am going to ramble about my initiation to the realm of coding , so feel free to ignore the rest of my post but what the hell here we go. From an early age , no idea when, I was exposed to the idea of the computer. Never used one before or saw on in person other than what I saw in the TV I asked my father to get me one and he agreed on the ground that I wont use it just to play games but to learn how to code. My father had no idea what coding is, had no idea what technology is, to this day he hates technology and he refuses to learn even how to close a window. None , friend , relative or random stranger I knew used a computer. So I got this weird thing called computer and turned it on, of course motivated to play games like any other kind in my age, I was 9 years old at the time, december 1988. But I had a sense of honor even from that age so I had to keep my promise. So I did and I was fascinated by it, to the degree that I was coding as much I was playing games. Problem is that it was mainly masochistic venture. I had one book and one book alone, none that had any clue how to show how to turn this thing on and of course no internet, no schools, no magazines I could afford to buy or even know where to buy them . So in 3 years, I made nothing special, only tiny fragments of code and I was still struggling with basic concept like looping. Yes, looping. But I already was doing things that a greek kid did not suppose to do and I did not even fit the geek stereotype at the time (not that the term existed at the time, I still does not exist in my language), I had tons of friends, I was anything but shy , I was the craziest nosiest kid suffering from the annoying syndrom of hyperactivity and with very lmited attention span. I was the absolute worst candidate to learn how to code, yet I did . Sort of. Then my father decided to send me, after me begging on my knees, on a prrivate school, that just opened near our neighborhood for learning. At the time time I only still had the same computer, Amstrad CPC 6128 and knew the very basics of Locomotive Basic which was used also by the computer as a bash like language for its OS. I went 3 years, the first year I did ok, an average student even though I had by far the most experience than other kids we learned GWBASIC. The second year I did terrible, we learned DBASE and the third we learned CLIPPER and blow any other student completely away, I was the only to graduate with 99.8% and our teacher was super strict on the matter of grades. But I wanted more. So I went and learned C++ and assembly because why not and when I told my teacher that, he was looking me with his eye wide open, took me quite a lenghy discussion to convince him that this was true. The reason why the first year I did average was that it was too easy. I was already familiar with Basic , sure I was struggling with basic concepts when I started but under the wing of the teacher (he was a great teacher, professional coder and highly skilled at helping you understand even the most difficult concepts) and full access to multiple books in few months became a walk in the park. The second year was a disaster, partly because our teacher decided to hire a relative of his to teach us DBASE and the guy was a moron wasting his time with telling jokes. The truth is that I did not like and still dont like database coding. Clipper I fall in love with it at the time because still a database orientated language but our teacher tought us, his relative got sacked as soon as he learned that he sucked, that happened one year after because none of the kids had the courage to go tell him and it was probably a parent the told him and did so well I was even offered to make a database for a considerable amount of money. Said no. Again not interested. My story is nothing special, I heard it in slightly diffirent versions by countless others in a similar situation however my point is not to brag, because lets face it I was just merely learning languages and not doing any serious coding , my point is that the drive behind it was the pain. Was the obstacles. Was the challange. Pharo for me is also the same story. At the time I was coding in Python, super easy, got the job done, had no intention learning another language because why bother when they all look the same and they would have been much less powerful than Python. I was super happy with Python and still is one of my favorite language as you all know. Then I saw people on forums rambling about this weird language called Lisp , I was interested, google a tutorial , saw the parentheses , said "hell no!" and carried on coding in python. Then even more people claiming that it was so amazing, that it can cure cancer and make you super sexy. I always wanted to be super sexy so I said, ok lets give this a serious try. So I bought a book called "Land of Lisp" very fun to read, terrible teaching material, messy and all over the place. Community was terrible too (Common Lisp), at least some people, rude, snobs, evangelistic and plain stupid. A minority of people but still enough to ruin your day.Then I was introduced to emacs, another super painful experience, thoroughly enjoyed and one day I mentioned how cool it would be if one could combine the simplicity of Lisp with emacs but via a GUI IDE and without elisp which was hog slow. People immediately recommended Squeak, I though they were messing with me because none would pick such a ridiculous name for a language. Looked to me like a toy language for kids and then it hit my face like a train. Pain, pain and more pain. But it was well worth, I was completely blown away from the elegance of Smalltalk. The learning curve of Smalltalk and Lisp are plain insane. Made learningh DOS Assembly a walk in the park in comparison. But frankly thats half of the fun. Many obstacles, many challanges. And there lies my point that an obstacle is a good thing when it becomes an interesting challange. You have to have at least a degree of masochism to learn how to code in any language. Of course the question is what makes an interesting challange and welcome to the abyss that is called "human brain". None knows and we are not anywhere close in finding out. What we know is that documentation is super important , whether you are a masochist or not, you need it to progress. Problems is that documentation is hard to create and maintain, again masochism required. So we should not just worry about making it easier for people to reach documentation we should make it easier for people to maintain it. Because even masochism has its limits. Those limits are as far it is a pleasureable pain. So congratulations to anyone reading this long post , you already proven my point. Thus, let embrace the pain of Pharo and the pain of smalltalk and instead of trying to make it easy, boring and usual. Lets turn it to a challange, lets turn it to a painful yet pleasureable experience I think to that extend we in a very good path, I think Pharo is definetly a fun experience to use and learn. A huge plus also for Pharo is the community and how welcoming it is, we take for granted but my experience with Python was not the best either. I joined the IRC channel, other than having to endure the stupidity of "say lol 3 times and you are banned" , too many wars over languages and how superior Python is than anything else. Guido is god and blah blah blah... No thanks. People here are open minded, still "religious" about Smaltalk but they actually want to help , not to teach, actually help. I think we are a bit too obsessed on how to make Pharo popular, Smalltalkers suffer from this insecurity of the "failure" of the "best language of the world" not only to become popular but also to convince coders that "is not a a relic of the past". But we are fine, documentation is doing grear, Pharo is improving rapidly , the community is welcoming as ever. All we need is embrace our successes and our failures, reject the hype, consider the crticism and accept it or reject it and generally carry on doing what we all love. Improving Pharo. ;) |
In reply to this post by kilon.alios
Interoperability with pandoc is desirable
Some people want MSWord documents and they provide input in the form of MSWord documents. Or LibreOffice ODT. pandoc handles that well for a subset of MSWord options. pandoc allows you as well to write a custom output format -- in this case Pillar. E.g. conversion from MSWord docx to Pillar is possible. It would need somebody to look into the issue of doing some Lua scripting. pandoc has Lua embedded for output generation. --Hannes P.S. I will have some time later for Pillar issues (not Lua), but the document model and generation of slides. Still open issue on my list is rendering Pillar on Morphic, in particular slide. On 10/13/17, Dimitris Chloupis <[hidden email]> wrote: > Why exporting to latex, html and markdown is not enough for you ? > > On Fri, Oct 13, 2017 at 1:05 PM Gour <[hidden email]> wrote: > >> On Wed, 11 Oct 2017 17:18:54 +0000 >> Dimitris Chloupis <[hidden email]> >> wrote: >> >> > Well there is a move towards Pillar for class and method commands so >> > who knows maybe we will have that soon enough ;) >> >> Let me say that I'm very happy seeing that Pillar is moving forward (e.g. >> addition of support for footnotes) as well as plan for the future (*.epub >> support) since I'm considering whether it could serve as single-source >> markup >> for all of one's writings? >> >> After migrating from Python-powered static-site-generator (to Hugo) and >> rst >> markup I was considering to use AsciiDoc(tor) markup for all my content, >> but, >> so far, due to using Emacsm settled to use org-mode instead. Haven't >> tried >> with >> slides (yet), but there is Pandoc support for it. >> >> Therefore, I'd rather see Pillar support in Pandoc which would buy us >> even >> more >> import/export capabilities for free instead of focusing on single formats >> like >> *.odt, *.epub etc. >> >> Pillar with 1st class support in Pandoc would, imho, improve status of >> Pharo >> itself making it along with Pillar exceelent tool for development as well >> as >> for all writing needs - articles, books, documentation, >> slide-presentations. >> >> But it would be nice to make it more transparent where/how can one submit >> feature request for Pillar? >> >> Fogbugs issue trakcer is certainly not the ideal place these days... >> >> >> Sincerely, >> Gour >> >> -- >> Everyone is forced to act helplessly according to the qualities >> he has acquired from the modes of material nature; therefore no >> one can refrain from doing something, not even for a moment. >> >> >> >> > |
In reply to this post by kilon.alios
I completely agree with Ben. As for Dimitris, I have some points: There numerous reason why this kind of thinking is fundamental flawed, if not completely wrong I think you are missing one point here: people get used to Windows, using windows with all it’s quirks and nonsenses became strong reinforced habits for most people, and that is something REALLY hard change. The fact is , we love pain, we love barriers, we love doors that slam into our face. We love challange. But only if we find it interesting. See, I think that’s not the point, the point is that people are very resistant to any change in their habits, so much that’s usually better to short-circuit into their habits to make a change instead of trying to force a hard change on them. That is why I think Ben point of view is not flawed at all, on the contrary, removing barriers is a way to make Pharo seems more like what people are habituated, short-circuiting peoples habits into Pharo usage. Withing time, people better understanding of Pharo may trigger small, but incremental, changes to it’s habits to get the “A-ha!!!” moment where live code and all wonders of Pharo make sense. I frankly read very loosely the rest of you answer ( :) :P ), but I get you are not interested in making Pharo popular rather than get really interested, open minded people on borad so to make it even more amazing, but I also disagree here (in part :) ). There are lot’s of people who could do better for the community if the entrance were easier, more popularity could means more opportunity in job field and, in a more philosophical matter, a way to make the whole current programming field better. Of course, with more popularity comes disadvantages as well, some of which you already said, which can be addressed, but if this is price to pay I personally think it is worth it. On Fri, Oct 13, 2017 at 4:00 AM, Dimitris Chloupis <[hidden email]> wrote:
|
In reply to this post by Hannes Hirzel
Hi,
I have created a document in Grafoscopio. The source file is a single Grafoscopio notebook in STON [1] (~600kb), the output is a single Pandoc's Markdown file[2] (~500kb), and you can produce the output as a PDF file like in [3] (~13Mb). Pandoc has a lot of maturity and a community with a lot of momentum, dedicated mainly to light documentation. If we have support for Pandoc's Markdown on Pharo, we can leverage on that knowledge and tools without reinventing the wheel. Of course using AST and a lot of infrastructure behind Pillar can be used, without falling in love with its syntax. [1] http://mutabit.com/repos.fossil/mapeda/doc/tip/mapeda.ston [2] http://mutabit.com/repos.fossil/mapeda/doc/tip/mapeda.markdown [3] http://mutabit.com/repos.fossil/mapeda/uv/mapeda.pdf Cheers, Offray On 13/10/17 08:21, H. Hirzel wrote: > Interoperability with pandoc is desirable > > Some people want MSWord documents and they provide input in the form > of MSWord documents. > Or LibreOffice ODT. > > pandoc handles that well for a subset of MSWord options. > > pandoc allows you as well to write a custom output format -- in this > case Pillar. > > E.g. conversion from MSWord docx to Pillar is possible. > > It would need somebody to look into the issue of doing some Lua scripting. > pandoc has Lua embedded for output generation. > > > --Hannes > > > P.S. I will have some time later for Pillar issues (not Lua), but the > document model and generation of slides. Still open issue on my list > is rendering Pillar on Morphic, in particular slide. > > > On 10/13/17, Dimitris Chloupis <[hidden email]> wrote: >> Why exporting to latex, html and markdown is not enough for you ? >> >> On Fri, Oct 13, 2017 at 1:05 PM Gour <[hidden email]> wrote: >> >>> On Wed, 11 Oct 2017 17:18:54 +0000 >>> Dimitris Chloupis <[hidden email]> >>> wrote: >>> >>>> Well there is a move towards Pillar for class and method commands so >>>> who knows maybe we will have that soon enough ;) >>> Let me say that I'm very happy seeing that Pillar is moving forward (e.g. >>> addition of support for footnotes) as well as plan for the future (*.epub >>> support) since I'm considering whether it could serve as single-source >>> markup >>> for all of one's writings? >>> >>> After migrating from Python-powered static-site-generator (to Hugo) and >>> rst >>> markup I was considering to use AsciiDoc(tor) markup for all my content, >>> but, >>> so far, due to using Emacsm settled to use org-mode instead. Haven't >>> tried >>> with >>> slides (yet), but there is Pandoc support for it. >>> >>> Therefore, I'd rather see Pillar support in Pandoc which would buy us >>> even >>> more >>> import/export capabilities for free instead of focusing on single formats >>> like >>> *.odt, *.epub etc. >>> >>> Pillar with 1st class support in Pandoc would, imho, improve status of >>> Pharo >>> itself making it along with Pillar exceelent tool for development as well >>> as >>> for all writing needs - articles, books, documentation, >>> slide-presentations. >>> >>> But it would be nice to make it more transparent where/how can one submit >>> feature request for Pillar? >>> >>> Fogbugs issue trakcer is certainly not the ideal place these days... >>> >>> >>> Sincerely, >>> Gour >>> >>> -- >>> Everyone is forced to act helplessly according to the qualities >>> he has acquired from the modes of material nature; therefore no >>> one can refrain from doing something, not even for a moment. >>> >>> >>> >>> > |
In reply to this post by Offray Vladimir Luna Cárdenas-2
I can't remember ever using API docs in any language, dynamic or not. They give you the method signatures, but if you have, say, methodX(int, int, String), how are you supposed to guess what ints and what String the method actually needs, unless the methods are nothing but getters and setters (which I've never understood the point of) ? (I know, most give (int somename, int someothername, String whatever), but how often do are method names well thought through enough to imply definitively what the method needs?. It's my biggest issue with Algol-style syntax - the method caller is supposed to know how it works, rather than whoever actually wrote it. It's probably at least one of the reasons for the amount of OSS in Java, and more recently in JavaScript (though the latter is more no-style than Algol-style). I nearly always download the source to OSS libs although I rarely ever bother building it, so I know what a method does with the params, and I can be sure what params to give it. One of my favourite language fails can be reproduced by doing this: Declare a field private final in Java, initializing it either in the declaration or the constructor, and provide only a getter. Use the getter from another class and change the value of the local variable. Then use the getter again, but assign the value to a new local variable, and check the value. Guess what? The value is whatever you changed it to in your other local variable, although the API docs claim javac won't compile it. I tested this with Java 8, I haven't bothered to see if it was always like that or if they took the rule out of javac because it interfered with some syntactic parmesan, such as lambdas. I should copy my test code into VisualAge for Java and see if in fact it compiles with JDK 1.4.2, or if javac was changed in between 4 and 8, since the addition of various flavours of syntactic parmesan mostly started with Java 5. Not that it's all that important in one sense. If 'private' and 'final' were supposed to be guides for other developers to be careful if they're thinking about changing it, fine, anyone who doesn't isn't all that good a developer. But given the number of 'not very good' developers I've had the misfortune to work with in Java, it's more problematic than it should be. It also makes the pattern of a private field with a public setter even more useless, since the setter isn't needed to change the value. I always get dinged by whatever lint companies use for not bothering with that pattern, though, and pointing out that declaring the fields public accomplishes exactly the same thing never helps my case, because whatever lint they use, it has to be right, there's no way a non-lint developer might be right. Andrew Glynn -----Original Message----- Date: Wed, 11 Oct 2017 10:01:20 -0500 Subject: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk To: [hidden email] Reply-to: Any question about pharo is welcome <[hidden email]> From: Offray Vladimir Luna Cárdenas <[hidden email]>
Yes. I know them. I mean API docs as static files. I don't really sold on them compared with a live system and I don't think static API docs are critical for Pharo success. Cheers, Offray On 11/10/17 09:52, Dimitris Chloupis
wrote:
Ah and my static website was built with Pillar and Bootstrap, using bootstrap templates was easy because Pillar supports mustache that makes html manipulation much easier |
In reply to this post by Gour
epub already works. Now it should be improved.
Doing an pandoc exporter should not be that difficult. If you do it I will integrate it. On Fri, Oct 13, 2017 at 12:03 PM, Gour <[hidden email]> wrote: > On Wed, 11 Oct 2017 17:18:54 +0000 > Dimitris Chloupis <[hidden email]> > wrote: > >> Well there is a move towards Pillar for class and method commands so >> who knows maybe we will have that soon enough ;) > > Let me say that I'm very happy seeing that Pillar is moving forward (e.g. > addition of support for footnotes) as well as plan for the future (*.epub > support) since I'm considering whether it could serve as single-source markup > for all of one's writings? > > After migrating from Python-powered static-site-generator (to Hugo) and rst > markup I was considering to use AsciiDoc(tor) markup for all my content, but, > so far, due to using Emacsm settled to use org-mode instead. Haven't tried with > slides (yet), but there is Pandoc support for it. > > Therefore, I'd rather see Pillar support in Pandoc which would buy us even more > import/export capabilities for free instead of focusing on single formats like > *.odt, *.epub etc. > > Pillar with 1st class support in Pandoc would, imho, improve status of Pharo > itself making it along with Pillar exceelent tool for development as well as > for all writing needs - articles, books, documentation, slide-presentations. > > But it would be nice to make it more transparent where/how can one submit > feature request for Pillar? > > Fogbugs issue trakcer is certainly not the ideal place these days... > > > Sincerely, > Gour > > -- > Everyone is forced to act helplessly according to the qualities > he has acquired from the modes of material nature; therefore no > one can refrain from doing something, not even for a moment. > > > |
In reply to this post by aglynn42
Am 13.10.2017 5:50 PM schrieb "Andrew Glynn" <[hidden email]>:
Isn't this exactly what an apidoc is for? Additional documentation to describe the methods and arguments purpose. Maybe you have just seen poorly documented libraries?
Maybe you should re-read about javas final keyword. It is not to meant making something immutable , you can just not reassign a new value. Java final != c++ const |
I understand why it occurs, both the private and the final keyword affect the reference rather than the object. However, to quote someone else "That the value of a private field can be changed without a public setter implies that encapsulation is weak at best, and shouldn't be counted on to protect key values, even in combination with the final keyword." Even that comment, though, brings in the notion of a 'value' that's not an object. My point initially was not about the code, but about the Java API doc that also claims attempting to change the value will result in a compile error. Although keywords affect references, the documentation states that it affects 'the value', which is at best ambiguous. There's inevitably a conflation of passing by value and passing by reference in Java by former C/C++ programmers, since it looks like PBV to a C/C++ programmer while always in fact being PBR. When copying syntax inverting the meaning of the syntax is counterproductive. There are also numerous issues around type erasure (mainly that it works for collections, even simple collections such as vectors, but not for arrays) and the resulting need for Java to allow invalid type casts in certain cases even though they can result in uncaught runtime exceptions. Since the fact that they are invalid is explicit in the API doc, that they are allowed because there's no other way to do it is problematic. Using lambdas or the streaming API within Java EE is another undocumented problem, or set of problems ( it was good fortune for me personally - when some software using the streaming API in an EE container consistently failed and the developer had no idea why, the company gave me the project I implemented it in Pharo, ☺ ). Oracle did at one point have a note on the Java EE 7 download page to the effect that Java EE 7 shouldn't be used with Java SE 8, but that was 'disappeared' when Java SE 7 was no longer supported and Java EE 7 was still the latest version. Since Java EE 8 is not even on the horizon, while SE 9 is due 'any minute now', I have to wonder if EE is simply dead. The requests from IBM, SAP and others to take over EE imply they at least suspect the same. I'd rather have no API documentation than documentation of the sort represented by the Java API doc. Not that I think it's all intentional, though perhaps the primitives and scalars that are in fact objects and collections may have been to muffle wailing from C/C++ programmers that the lack of primitives and scalars would kill performance. I suspect it's more often a result of unsuccessfully mode-switching, though, between the rules of the language you're implementing and those of the language you're implementing in, but that only makes the case for languages implemented in themselves stronger. Andrew -----Original Message----- Date: Fri, 13 Oct 2017 18:39:59 +0200 Subject: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk To: Any question about pharo is welcome <[hidden email]> Reply-to: Any question about pharo is welcome <pharo- From: Nicolai Hess <[hidden email]> Am 13.10.2017 5:50 PM schrieb "Andrew Glynn" <[hidden email]>: I can't remember ever using API docs in any language, dynamic or not. They give you the method signatures, but if you have, say, methodX(int, int, String), how are you supposed to guess what ints and what String the method actually needs, Isn't this exactly what an apidoc is for? Additional documentation to describe the methods and arguments purpose. Maybe you have just seen poorly documented libraries? One of my favourite language fails can be reproduced by doing this: Declare a field private final in Java, initializing it either in the declaration or the constructor, and provide only a getter. Use the getter from another class and change the value of the local variable. Then use the getter again, but assign the value to a new local variable, and check the value. Maybe you should re-read about javas final keyword. It is not to meant making something immutable , you can just not reassign a new value. Java final != c++ const |
In reply to this post by Nicolai Hess-3-2
Well oh Well, Python is stupid.... Very, very stupid To my suprise live coding in Python its actually easier to what I expected and almost the same, from user perspective to that of pharo.Minus the IDE conveiniece of course. But a pain in the hat to find the proper way to do it. I was reloading modules, was thining of implementing become to python , which basically means replacing references to old instance object with references to new objects , then I thought that it would be more efficient to just reference the new methods to the instances and after a TON of testing I realized this is dead simple and for some reason python hides it very well. All the above were completely unecessary. Insance methods are referencing functions in the class object. Apparently functions in a class are taken as class methods and functions with self as first argument are considered instance methods. Which means I just copy paste the code of the method to the debugger, and assign it back to the existing live class and all instances are updated automagically. No need for become, no need to update instances manually no need to even reload the module. Similarly you can delete methods and add methods on the fly always live. Renaming a method is basically deleting and assigning . Renaming the class is the same. As is for class and instance variables. So anything can change on the fly. Names are there for your pleasure, in the end all that matters are the references.Its objects all the way down. The equivelant of a python instance method defiition and live updae , the python way, on Pharo would be MyClass instanceMethodName:= myMessage firstArg:self arg2: foo1 arg3: foo2.... |locals| code stuff and you python "call it" or message it MyClass insanceMethodName arg2:foo1 arg3: foo2 , no need to use self when calling it. Self is automatically passed because from the definition python knows this is suppose to be an insance method. or you could put a block after the assigment , because the name of the message is assigned by the assignment anyway, for class method you ommit the first argument of self. Calling is the same. This replaces a method or adds it if does not exist. All instances of that live class are immediately poitining to the new method. So the class is basically a collection of references. So all I have to do now is to wrap the copy paste and assignment in a single shortcut or button and I am ready to fly to live coding land. Days wasted chasing my tail but at least I learned a lot about python objects which are basically dictionaries objects (for variables) plus function objects (for class and instance methods) wrap inside an object, or rather referenced, called a class. Storing the live state , similar to fuel, is supported by the pickle library. Why on earth python made it so hard something so simple to understand ? no idea .I dont even need to make a live coding enviroment library as I assumed, its already there, hiding under the cover too scared to come out. Now I know why none or almost none does live coding in Python. |
In reply to this post by aglynn42
2017-10-13 22:04 GMT+02:00 Andrew Glynn <[hidden email]>:
and who did you quote ?
I can not see what is wrong here. You are problably confused by - the value of a *variable* - and the value an *object* represents (its object state) the first can not be changed for a final variables the last can only be preserved, if the object is immutable.
... this seems a bit off topic
I think a java api doc like documentation would help. For newcomers, that not yet know ( or know how to find) the in-image help. And even so we can easily browse our code with comments and class comments, an API-doc could provide the help from a different view (group by collaboration rather then by class hierarchy or packages), give an "overall" view or provide additional code examples.
How are java primitives "in fact" objects ? They are "in fact" primitives. This is different from smalltakl where some *objects* like Smallinteger are implemented as primitives (or immediates) but still objects on the (smalltalk) code level.
|
In reply to this post by kilon.alios
The first language I played with, I was nearly 5, was a live environment, Forth. I used it on an old PDP my mother had bought that was being surplused at the company she worked at. I used Forth until I was in my early teens, it was far superior to the BASIC that most other kids I knew who knew any programming used. It wasn't Smalltalk, but in many of the areas it was used (production automation is one major area), the language that most often replaced it was Smalltalk. The biggest difference, for me, as I wrote in the article the other day, is the ability to build-on rather than build-with, which in turn is based on the environment being written in itself. Ruby looks very much like Smalltalk, but it works like Java; Python works more like Smalltalk, and it's a much better live environment than Java or Ruby, because more of it is written in itself, but too much of Python is written in C, and that causes problems. If the code that interprets/compiles your code follows the same rules, the machine code it generates will usually also follow the same rules, and those rules/restrictions are, for the most part, designed to make code more reliable. As well, RVM has proven Smalltalk (specifically Squeak / Pharo, though admittedly an older version) can scale to 1024 cores nearly linearly. Python has a decent developer base but it's almost all OSS and almost all on Linux. Very few applications in Python are in areas where reliability is absolutely necessary, or even all that important. Like Smalltalk, it's a general purpose language in a niche, but the niches are very different. For years, decades really, any good version of Smalltalk cost an arm and a leg (some of them both of each), and as a result it tended to be used only where things really had to work. Pharo is a great OSS Smalltalk, IMHO by the best to date (Squeak was/is good, but the LaF was never professional enough for it to be taken as seriously as it deserves, it just looks too much like a toy although in reality it's very powerful). Having the capability to build-on a reliable, attractive and enjoyable base without signing over my great-grand-child's first born is fantastic, and a great achievement for those who accomplished it. Kendrick is an example of what can be done if you build-on: it was built on Moose, which is built on Glamorous, which is built on Morphic, which itself is based on a couple of decades work olving the basic problems inherent to UI's and MVC-type UI's in particular. Kendrick itself was written in a very short time when you compare it with other epidemiology programs, if you only count the time spent on Kendrick itself. It's an inherently complex problem area, and it's a life or death problem area. That an application capable of working reliably enough to be trusted in that area was built in a short time, because it was built-on a couple of decades of OSS work, is a huge compliment to those who were involved. Unfortunately for me, I wasn't, ☺. But at least I can take advantage of it existence now. Andrew -----Original Message----- Date: Fri, 06 Oct 2017 21:18:28 +0000 Subject: Re: [Pharo-users] Behold Pharo: The Modern Smalltalk To: Any question about pharo is welcome <[hidden email]> Reply-to: Any question about pharo is welcome <[hidden email]> From: Dimitris Chloupis <[hidden email]> Wise not to mention Ruby and Python and Pick the worst of the worst in OOP. Because frankly the competition for Pharo against those two behemoths can be quite brutal in the flexibility and power of OOP.
And no , these language can do live coding with ease. I know because I currently code live coding style with Python for an app I am making. Sure it wont provide you with a live system out of the box, but put in 10 lines of code and you already ready to go with hardcore live coding. At least Python , Ruby being practically a rip off of Smalltalk language may need even less. iPython which by the way is by far the most popular Python tool is the real deal, a full blow live coding enviroment. To my suprise its not even hard to do live coding with C/C++ including using image format. To my shock live coding is actually supported by both the OS and the hardware. Hardware has its own exception system , OS has an image flie format called "memory mapped files" used for DLLs and a lot of essential functionality. For some weird reason however its well hidden and not that much utilised by coders. They really love long compile times, dont ask me why. But yeah C++ even though it has come a long way with its template system, its still the king of ugly. That sytax, oh the horrors of that syntax..... yiaks !!! I am so enternal greatful that Pharo introduced me to live coding and opened my eyes to universe of fun and productivity. I cannot imagine coding an other way ever again. I really hope that we take this further though. On Wed, Oct 4, 2017 at 1:31 PM horrido <[hidden email]> wrote: Behold Pharo: The Modern Smalltalk |
I don’t care about Python vs Pharo debate. I love both I use both. My ultimate goal is to unite the two under a single Uber powerful live coding environment part of my project Atlas. With direct mapping between Pharo and Python objects and no compromises. A workflow that will be seamless that you won’t know if you use Python or Pharo libraries as the Atlas environment will allow you to work with both languages in a symbiotic relationship. That was a dream of mine that I did not dear to reveal now slowly and steadily becomes reality. I am extending the live coding environment of python and later will tackle the subject of a python image format. Already Atlas can use python libraries from Pharo but that’s about it , but after this revelation I can move to stage 2 of full synchronization between Python and Pharo. Even now Atlas allows you to use Pharo syntax to fully access Python libraries. But integration is skin deep and is what is going to improve the next years. So it seems something good came out of this very long discussion. Atlas is going for a big update. This thread has been a huge inspiration for me. Super excited :) On Sat, 14 Oct 2017 at 03:40, Andrew Glynn <[hidden email]> wrote:
|
In reply to this post by kilon.alios
Am 12.10.17 um 20:04 schrieb Dimitris Chloupis: > > Eclispe , which I will disagree with your that is not the worst IDE, > started as a smalltalk IDE and then it got Eclipsed. I am sure those > people had a "build on" environment , still it got messy. We can blame > porting to Java, but can we really blame Java for the mess that is > called "Eclipse".... ehhhh.... nope. > Eclipse was never implemented in Smalltalk. Its predecessor, VisualAge for Java (and parts of the other VisualAge family members) was. Eclipse was started as a replacement for VisualAge for Java because Java develoers didn't like VisualAge for its emulation of an image based environement. It was a very nice IDE for Java (the best I've known), but it wasn't a nice home for developers who think in files. These days Eclipse, IMO, does emulate an image as good as possible, but nobody cares anymore, because it hides the fact and lets you think in files ;-) Joachim |
I stand corrected
|
In reply to this post by jtuchel
The problem is that it takes 1233 pages of config, and that's the summary page of my config, and it uses 15GB RAM, on my laptop, lol. On Sat, Oct 14, 2017 at 1:10 AM, [hidden email] <[hidden email]> wrote:
Andrew Glynn 512-818-3291 |
In reply to this post by aglynn42
On 10/12/17, Andrew Glynn <[hidden email]> wrote:
> https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034 > c71 > This is an article not specifically about Pharo, rather on the state of > the industry > in general and how it got that way, but positing Pharo as a way to > learn > building-on rather than building-with, where in the latter case on > every project you start at essentially the same place. > As a result it does put in front of people a fair amount of info on > Pharo, and challenges them to try it. > > cheersAndrew Glynn Thank you for this comprehensive report. Do you have a reference for more info about the epidemiology project which was completed in only a months time? [1] -- Hannes [1] <citation> After Google spent millions failing to solve the epedemiology of the Ebola outbreak, an application built with it, or rather on it, by one developer in an extremely short timespan (under a month), successfully predicted the path and allowed it to be stopped by vaccinating those in the most likely path. Google themselves took notice, and their Dart language, while using syntax similar to the JavaScript many of their developers are familiar with, uses the object model from the OSS Smalltalk. The problem is not simply a matter of how much engineers enjoy their work, but it can be a life or death matter, as it was in the case of the Toyota microcode. </citation> |
On Sat, Oct 14, 2017 at 11:50 AM, H. Hirzel <[hidden email]> wrote: On 10/12/17, Andrew Glynn <[hidden email]> wrote: Yes I'm also interested by this. Never heard this before :-) Serge Stinckwich UMI UMMISCO 209 (IRD/UPMC/UY1)
|
Free forum by Nabble | Edit this page |