HackerTrans
TopNewTrendsCommentsPastAskShowJobs

amno

no profile record

Submissions

Greenspun's 10th rule and the sad state of software quality

gist.github.com
2 points·by amno·작년·1 comments

comments

amno
·5개월 전·discuss
I have read through your pdf and I think you make a best case for Lisp I have read in last few years.

We could just imagine who programming languages would look like if we abandoned the specialized notations like Haskell or C++, of which C++ really starts to show up that such notations are probably a dead-end. Or if B. Eich was allowed to use Scheme as the built-in scripting language for Netscape. Perhaps we would not need XML and/or Json even Yaml as machine interchange and description formats?

Anyway, I am not familiar with Futamura and yaml spec, your texts in the repo, and your project is the first time I see this. I did a webserach and have read through the Wikipedia page on Partial evaluation which talks about Futamura projections. But can you please ELI5-me about your project: is this a yaml parser generator or is this a DSL/PL language parser generator? Can I specify few rules in a language of my choice, say C, and it will generate a yaml parser and test suite in C language? Or does it mean I can specify a parser for a programming language, say C or a DSL, as yaml production rules in language of my choice, say Common Lisp, and it will generate a parser for C or that DSL in Common Lisp? Or do I understand this completely wrongly? :)

How does this project compares to something like tree-sitter? This AST you build, I have just glanced over it thus far, or use under the hood, could that be exposed somehow, or is it already, to the application? For example, could we build a server in Common Lisp, that reads this various language specs, builds an AST and gives us answers on questions like: is this position in a code for a function definition, or in a comment, and similar? In other words, could we use it for a tool that gives information about meta-data from the source code so we could use it to build tools like LSP servers, indentation servers, syntax highlight and such? Just a curious question, forgive me if I misunderstand what this does.

Edit: was looking a bit around and found a nice intro into Futamura projections: https://www.youtube.com/watch?v=RZe8ojn7goo.

This is awesome :). Thanks.
amno
·작년·discuss
(= * x x ^ x 2)
amno
·작년·discuss
Not by me, but thought it was well written article with some good points. Hope you enjoy it!
amno
·2년 전·discuss
Hi Drew!
amno
·2년 전·discuss
> setf is like referring to a mutable reference in C++ or Java.

Setf is rather a computation of a reference, than a reference.

A reference in Java and C++ is a pure pointer, with some syntactic sugar in java (you skeep */-> to define and dereference it), and few corns of sugar spread on top of it in C++ (can't be null).
amno
·2년 전·discuss
And lambda calculus isn't even a programming language. The argument was like saying "C still tries to preserve something from Touring machine".
amno
·2년 전·discuss
We need nsetf! :-)
amno
·2년 전·discuss
I am with you, I think setf is making code repetitive and more verbose in many cases, however in this particular case, if you see

    (var *some-object* value)
somewhere far away from the class definition, say in another file, can you tell immediately what that code does? Can you understand it directly by looking at the code? Do you define something? Do you set something or do you just read something like a property list (something like rassoc)?

    (setf (var *some-object*) value)
With setf it is immediately clear from the code what is going on. I don't know if that is the best example, just thinking of all the arguments for and against setf :). Personally, I find it makes code more verbose in many situations.
amno
·2년 전·discuss
Yeah, that is great idea, and I agree it sounds great on paper. However, some time ago, I have come to a conclusion that it soon becomes quite verbose and tedious.

I think it worked better in the past when people used acronyms and very short names for function and variable names. Today, with self-documenting code style, names are longer for both functions and names. Constantly typing full paths gets annoying quite soon. Code is also more verbose to read and less code fits into 80 columns.

My personal conclusion is that I actually prefer to abstract those away with a proper name like aset, put, and so on, just to make my own code less verbose.

If they really wanted to simplify the language, they should have perhaps removed 'setq' and 'setf' and just kept 'set' in the language but with the powers of setf. Not to mention that users have to learn how to write own setf accessors, unless it is very simple stuff (the extra bit of magic you mention).

As a "simplification" of the language I think they have failed, if that was the goal. That does not mean that 'setf' is not useful. On the contrary, it is a very useful tool to be able to compute and set a "place", just shouldn't be sold as a simplification.
amno
·2년 전·discuss
> The author of “Let Over Lambda” dislikes Emacs and does not use it.

I have no idea what Hoyte like to type in, but why does it matter what text editor he uses? Einstein didn't had any computer, not even a calculator. Do we have to use paper and pencil for all the calculations just because Einstein did? Our physics teacher in gymnasium, forced us for 4 years to do all calculations on tests by hand, at four decimal places, with that exact excuse: Einstein didn't have a mini calc. Non of us have become a Nobel prize taker in physics :).

> Also, a lot of the interactivity is required by the standard to be built in to your Lisp’s REPL, so you can do quite a bit if your REPL isn’t primitive.

Mnjah; not so much really. Using at least SBCL from plain command line really sucks. If you mistype something you have to retype everything, no history, etc.

> SBCL doesn’t even have readline

If you are on some *nix OS, you can get a long way by just using SBCL with built-in sb-aclrepl + linedit. Aclrepl gives you "command-like" stuff, similar to ":" in Vi (or M-x in Emacs), and linedit adds cursor motion, history and some basic completion. I would still not type entire programs in repl, but for running and testing the code it is a basic survival kit. For me personally it is enough.

There is also cl-repl package which gives you native bindings and some extras if you want to go all-in readline from within the lisp itself.
amno
·3년 전·discuss
It have corrupted my drive several times.
amno
·3년 전·discuss
> Clarity in your technical communications matters.

Indeed; it does.

I wish more people watched that Steels talk, where he speaks about importance to use accessible language. One-syllabus words all the way would be perhaps a bit tedious read, but he makes a very good point about clarity in connection to simplicity.

Thanks for all the links Raiyner.
amno
·3년 전·discuss
Thank you for the paper, and for the work!

Can I ask a newbish question: will this new GC be available on all OS:s and CPU architectures, or only on some? I don't see anything in the paper about being limiting to some certain platform, so my hopes are high :).
amno
·3년 전·discuss
> Perhaps the negativity stems from the all the illegal, immoral, and damaging acts in this era.

Perhaps, but hate against Microsoft was not the point of the discussion. You are free to see them in whichever light you want, I just don't understand why you have to down-vote me or bring that into completely different discussion.

The question here was about the technical issues and their work on making software tick despite people abusing the API and producing buggy software. That has nothing to do with hate against Microsoft. To me that sounds like a whataboutism.

By the way, I personally don't even use Windows, I have been 100% Linux user since many years and have contributed to a GNU project, I am not some Microsoft fanboy as you might see me. But I see no value in defending a wrong, and I see the same behavior repeated in other communities. People abuse the API or don't read the documentation or just are plain idiots, and than accuse the developers for being malicious or stupid or whatever when things break. That behavior is bad for anyone, regardless if it is against Microsoft or some GNU project.

> In short people hated them for being shitty people who do shitty things and present leadership were important folks when these shitty things were done everyone just moved up a few rings.

I am sure people have many reasons they hate something or someone for, Microsoft included. There are people who passionately hate GNU, Linux, FSF, you name it. If you justify such behavior, it is your choice, but I am not interested in that discussion. I was talking about people abusing API and than blaming Microsoft for incompetence or deliberate evil, while the company obviously went to quite long efforts to make things work, even for buggy software. Microsoft may as well be evil or good for other reasons, but wasn't really the point of discussion.

> They aren't better people they just have better aligned incentives where illegality and immorality aren't profitable.

This is outright dangerous behavior on your part. You are transferring a behavior you have projected on a company over the entire group of people, all the thousands of people who work for Microsoft. To start with, they are all individuals, and as in every group there are good and bad characters among them. Also, history is against you, Microsoft was, and still is very profitable company. In the time we speak about, they were probably too profitable for its own best. For the second there are law and law enforcement officials to decide if they did illegal business or not.

Not to mention, that probably most of those who worked there back in 90's are probably retired or have changed the job by now. Also, to note, with thinking and statements like that one, you are denying people chance to develop as individuals and become better persons.
amno
·3년 전·discuss
Yes, people used undocumented functions, which were left undocumented as they were a subject to change, and accused Microsoft of not understanding software development or thought that those undocumented APIs were somehow better than the recommended documented ones. When stuff crushed after Microsoft changed an API people would be accusing them for deliberately breaking their applications and what not. I remember the hostility in those years 95-2005 towards Microsoft. There is still some cult in some Internet communities where trashing anything developed by Microsoft is seen as some kind of expertise or something by usually self-proclaimed experts.
amno
·3년 전·discuss
Yes, Raymond Chen describes such fixes in [several blog posts](https://devblogs.microsoft.com/oldnewthing/) and in his book The Old New Thing. Check the old posts, back at the beginning. There are posts about to which lengths they went to ensure buggy applications still worked after an update or a fix.
amno
·3년 전·discuss
Perhaps you wish to look at Common Lisp? I think it gets you covered in all those things you mention. There is distinct read, compile and evaluation phase, all exposed to the application code.

If you get a good compiler like sbcl, you can go a long way with just the language itself since the language itself offers a blend of scripting language qualities while being a compile language. Emacs Lisp can go long way too.
amno
·3년 전·discuss
No, no; it wasn't was I meant; I clarified in the last one; release things for free for already non-paying customers for non-commercial use only, Qt style. I am hard to believe Boeing would count in that group :).
amno
·3년 전·discuss
> LispWorks and Franz are still alive.

Yes, but what makes us believe they won't go the same faith as all the others?

> fear what you propose would kill them very quick

Why? Is their technology that bad? I don't think so. I think they need to let people use their stuff, show to the masses the good things about Lisp and their tools and let the masses learn how to use those tools.

> If someone sees a business, they could easily layer something on top of SBCL or provided other improvements.

It is not just. Layering something on top is a lot of work :). It is software, everything is possible, but who has the manpower and time? However people do layer stuff on top. We do see people making cool and interesting stuff, but it is relatively few enlightened persons. We don't see a mass movement; perhaps masses need to see a "killer app" or something, like when JavaScript got Chrome and went from verbotten on every computer to No. 1 language (more or less)?

I think the business is made by giving the technology to people, and letting them use it. Once it is in use by individuals and people realize the power of their tools, I believe it will see more use in businesses too. As I said; I think it is a "vicious circle" as they say here in Sweden.

> Once they were gone it was difficult to keep it ported to new platforms and to fix hairy bugs.

Yes, that is a normal thing. Once the experts are gone, the platform is dead. To survive, a platform needs to attract new people and bring them up to expertise level. But every platform also has to adapt and as well to be well documented. I wish to make an extension for sbcl, I don't see any writing anywhere on how to proceed, so I have to look through the source code. It is not impossible, but is more tedious than it perhaps should be. The best thing with Emacs is actually the documentation, and the openness. I think. I don't know for sure, but it seems so.

> The specialized niche languages tend to have capable implementations with large price tags. See for example the commercial Smalltalk implementations of Cincom or SICStus Prolog

Anyone still using Smalltalk? :) Yes, of course, I agree. What you describe is how the business was done, but I don't think the history speaks in that favor. I don't know, all this are just my speculations of course, but I think that is an obsolete view on the business. It seems that all those specialized companies that target big biz are sooner or later out of that biz. What would it mean for Franz to loose Boeing? Probably quite a lot. I don't know. I am not sure Oracle is doing that great as they did in the past either. There is a lot of inertia too; big customers can't easily switch. I mean, Cobol is still there, but it does not mean Cobol as a platform is doing well.

> Other financing models tend to be fragile... or depend on other sources

I didn't mean they should switch to some other form of making business and financing. I just mean they should let their tools go free for the masses, for people making open source code for non-commercial use. For businesses they should still sell and charge of course. I don't know, perhaps I am wrong; but which hobbyist like me will pay LW 400€ for the basic license? Or whatever is the price now. They wont make money out of hobbyists, students, indie devs and alike, so they can as well let those people use the thing for free for non-commercial and open source use like other companies do. Perhaps if they have good tooling, gui builders and so on, people will use it to create some interesting stuff, more people would learn how to use their software, and that I mean would play in their favor in the long run.

By the way, to mention is that Microsoft, Oracle, Apple, Google gives away their tooling basically for free, because they have realized that they want people to learn and use their tools. I don't know, perhaps there is not money in traditional tooling like GUI builders at all in the world of web technologies.

Don't get me wrong, I don't wish them anything bad, but I think that the Lisp community is so small and fragile, and it would perhaps help with the better tools. I think is a shame because it is a nice language for rapid prototyping and development with lots of potential that the humanity perhaps is slowly loosing; but now I am perhaps bit too dramatic and cheesy :).
amno
·3년 전·discuss
> Means there were too few commercial customers. Where they had commercial customers (like the Graphics & Animation business), there was a disruption by other technology, like SGIs (RISC CPUs with powerful graphics accelerators) and also Windows NT. The graphics software was sold to Nichimen and ported to SGIs and Windows NT.

And now even SGI is out of business. It is a little bit unfortunate, but I think there is a history lesson to learn. Symbolics, SGI, Sun, Xerox, IBM, AT&T, they are all gone from the software business, more or less. I mean IBM, AT&T and Xerox are alive, but they are just a shadow of former self they once were, at least on the software front. Seems like all companies that target high-level industry with big profits, and ignores the consumer market are fading away.

Compare that to Microft which exploded in market share after their Dos/Windows and Intel which exploded after their 8086/8088. It just shows how important it is to put the technology out to consumers. Not because mass consumers will create so much value, they will that too of course, but foremost they will learn how to use the technology and once they come to businesses and have to solve problems, they will use it. I think that is a problem Symbolics faced. They run on dedicated hardware that probably was a multum in price and was used for specialized problems, while worse technology was cheaper and more accessible. People used what was accessible and when a generation grew up and went to work of course it is cheaper to let them use what they have learned then to buy specialized hardware and train them in specialized language. I think same thing happened to SGI when big graphics software names released their software for Windows. I think it is a circle, or a rolling stone. It is important to put the technology and knowledge out in the hands of people.

It is a bit sad that LW and Franz are keeping their software behind the locked gates instead of letting them out in the free. I bet some middle-tier manager is sitting at the Boeing as of this writing and trying to figure out how to save $$$ by cutting out that crazy expensive expert-knowledge Lisp thing out of their software stack, just to save some $$$ and get promotion or a bigger bonus.

If LW and Franz are going to survive and not go same way as Symbolics, Sun & Co, they should probably rethink their strategy of licensing their stuff free for GPL/non-commercial use, similar as Qt and some other companies do. Perhaps SBCL is good enough, but Lisp community needs more and better tools. In expert hands Emacs is s superb tool, but it is not the average mass tool.

It is a bit shame. I think Lisp is such a great tool for software engineering and applications development, but it is so underused because the knowledge pool is so small and the best tools are locked away behind the pricey tag seems like. If/when those two guys are gone, LW and Franz, Lisp will be seen even more as an academic exercise rather than a useful practical tool.

I don't know, perhaps I am wrong, just thinking loud.