Because if you don't understand "an IDE , OS rolled into one" then you don't understand what Smalltalk is anyway. Its not easy to explain what Pharo is , the same way its not easy to explain what Emacs is , etc. There are may ideas and workflow integrated into it and its development workflow is radically different to normal programming languages.
"Does it compile to executables"
No it does not , but there is no need. Pharo can be distributed with your application and it does need to installed its a standalone.
"or does it require an interpreter or VM at runtime?"
its interpreted to byte code and it has a JIT VM. It is always runtime ;) Meaning everything is live and running even your source code. Compilation happens under the hood without the user being aware of it.
"Can applications be built from command-line (or a build script on a CI server), or is it tightly coupled with the IDE?"
There is a command line interface , also any method can be exported to command line and Pharo can run without a GUI.
"The Wikipedia article mentions some web frameworks, but the Pharo website shows screenshots of what appear to be desktop GUI applications (or maybe data visualizations running inside the IDE, a la R with RStudio?)."
There is a web framework which quite popular and actively developed Seaside that allow you to use javascript , html and the usual suspect. Plenty of others frameworks exists as well but not so actively developed. Most success stories in the web site use those frameworks.
"Maybe someone with some hands-on experience could provide a TL;DR, for those who aren't willing to read the full book just to get a high-level sense of this?"
you can also drop in IRC for general directions, and ask questions to the mailing list, the community is very welcomed for newcomers. But give pharo a try and ask questions and you wont regret it Pharo is a great way and fun way to create software.
> then you don't understand what Smalltalk is anyway
Sorry, but I think that is just wrong. As far as I know, Pharo is one of the best and more approachable alternatives to enter the Smalltalk world. They should be doing a better job at welcoming people to "their world". If they want people to just come already knowing what they are going to get, I don't see how are they going to go mainstream, ever (assuming they would like to.)
My personal opinion on this and no way the opinion of core Pharo devs, I am just a newcomer to Pharo and a minor contributor.
Mainstream will kill Pharo in an instant. Pharo is too cool and too well designed for mainstream. Pharo also is going towards a complete opposite direction of sacrificing features over ease of usage.
So in the end Pharo is not designed for the mainstream developer its designed for the developer that looks for something radical diffirent.
But diffirence comes with a cost, it means that you get out your comfort zone, explaining basic concepts takes much more time and effort because of lack of familiarity etc etc.
So if you dont understand Pharo at first try, thats not a bug thats a feature. If you do understand Pharo at second try that's a bug.
Some people refer to pharo as "the red pill" of coding, taking the red pill has its advantages but also significant disadvantages. The choice in the end is yours.
Sure documentation and website can be improved but it wont solve the problem that Pharo is outside mainstream way of doing coding because this is what makes Pharo so fun to work with :)
Does your definition of "bad reputation" also includes modern software basing itself on ideas and implementation that either originated from Smalltalk or greatly improved by it, like GUI MVC , mouse integration, VM , Test Driven Development , IDE and much more ?
If yes then I hope Pharo keeps bringing a lot more of this "bad reputation" I find it very useful and productive. Frankly I wish I was aware of this "bad reputation" 25 years ago, would have saved me a lot of trouble learning all these languages which just recycle the same old things slightly modified. Unfortunately I converted to Squeak and then Pharo , a couple years ago. But better late than never :)
By the way you do not need to be a "snob" Smalltalker to be upset about mainstream's software disregard of good designs. There are endless posts on C++ design, Java design, Javascript design , Eclipse design , Visual Studio design, the horror of MFC, the horrors of web development, the horrors of android development and so much more.
> Does your definition of "bad reputation" also includes modern software basing itself on ideas and implementation that either originated from Smalltalk or greatly improved by it, like GUI MVC , mouse integration, VM , Test Driven Development , IDE and much more ?
No, my definition of bad reputation is perfectly demonstrated by your tone and attitude throughout this thread. You don't even seem to be aware of it, which is mystifying.
Try to step back for a second, reread what you wrote and start wondering if you'd be even remotely interested in joining a community filled with people with a similar elitist and condescending attitude such as yours.
You like Smalltalk, I get it. Good for you. Now try to learn to promote what you like without making it sound like everyone who doesn't share your passion is an idiot.
You assume too much. I never called other people idiots. There is much more to coding than good design. Mainstream coding choose to focus on features, performance and background compatibility. Thats not stupid its practical.
Many of the good designs of Smalltalk have been integrated to modern coding as well. There are complex practical reasons why good design and ease of use has not been the focus for the majority of programming languages for very long time.
To classify myself as elitist you will have to find at least one time of me mentioning Pharo as best solution out there. Quite the contrary I already said that it comes with its own share of problems and issues.
I am not here to promote it, I am here to help people understand what it is and let them make their own mind if they are interested in giving it a try or not.
The Pharo community needs to knock it off, with that kind of arguments. (And I say that, being a part of that community).
Pharo is NOT too cool and too well designed for the mainstream. :(
It /is/ cool, and has a lot of good work put into it. But it still needs a lot more work (especially in documentation and tutorials) before it's really useable by people without extensive Smalltalk experience.
So, everybody shut up and roll up your sleeves and work. And be humble.
First that was my argument and my opinion as I stated several times already. Not an opinion of a whole community. Second I prefer to say things as they are instead of being humble.
I don't believe for example its good design to depend on C libraries so heavily especially for something as essential like GUI development . I know for at least one bug in GTK that took a year to get resolved on MacOS because most people were not interested in it. In Pharo bug fixing is a lot easier because the language is dynamic and live and it has plenty of powerful IDE tools to make your life easier find bugs and resolved them. Same process in C or C++ is a pain in the ass. Python community chose to heavily depend on third party C/C++ GUI APIs .
I completely agree about documentation and tutorials but that does not make Pharo any less cooler in my back or worse designed , its makes it partly undocumented. Which is one of downsides of using Pharo.
And this is not just about Pharo, take Common Lisp and compare it with Javascript, how one language has been designed and how another. Which one is most popular ? How many articles have been written about Javascript ugliness ? What about C++ and Java way of doing OOP ? Compare it with the way Smalltalk is doing OOP.
Good design have been proven again and again in the software world highly unpopular , because people prefer to buy features. You can be humble and you can be honest, but you cant be both. I chose to be honest.
As far as me is concerned to call something a red pill , it will have to offer a very diffirent experience. Thats is definetly not the case when it comes to coding, where you have the same old same recipe with some new things here and there. This is why also it took me so long to get used doing things in Pharo compared to learning another programming language which would be far faster. Pharo requires a rethinking of the fundamentals of the coding workflow.
You could argue that some language like Lisp requires the same, but the problem is that Lisp is just a language, Pharo is a lot more than that.
So for me, Pharo is the only "red pill" I can think of. Not because its diffirent but because is so fundamentally diffirent. Everything else is just blue pills with some red spots here and there. Thus I cant call Pharo
, "a" red pill.
But if you have something else that is as diffirent as Pharo is I am mostly welcome the info , love to try fresh approaches to coding :)
Another thing to note here is that I dont use the term "red pill" to identify it as something superior. Its not superior , far from it , it come with its own problems and weaknesses. Pharo is neither a paradise or a utopia.
Pharo is not for everyone but for specific people looking for a very diffirent way of coding. But even they may not like Pharo.
In the end Pharo is another way of doing coding, it wont make you sexy with the ladies or turn you into a super coder.
> You could argue that some language like Lisp requires the same, but the problem is that Lisp is just a language, Pharo is a lot more than that.
Actually Lisp is so much more.
Lisp is a whole family of programming languages and its implementations. From Lisps on tiny micro-controllers, PCs, servers, to supercomputers. From simple interpreters to highly optimizing whole-program compilers.
Pharo is just one particular implementation of the programming language Smalltalk.
"You could argue that some language like Lisp requires the same, but the problem is that Lisp is just a language, Pharo is a lot more than that." - You could possibly try Racket.
This "red pill" metaphor really can apply to anything. For example for a high-level programming language user, C could be a red-pill if learning it helps them visualize what's happening automagically thanks to the VM/interpreter of their usual language.
Nonsense. Hello world code in Pharo / Smalltalk is still a line or two, like in other languages.
You're probably referring to the fact that there's an option to deploy the hello world PLUS the VM it runs on, in a single package. That's like saying "You can't give a Java hello world to someone under 50 MB". Yes, technically true, the couple of lines of Hello World source code don't work without a 50 MB JRE. But you're being disingenuous.
> Because if you don't understand "an IDE , OS rolled into one" then you don't understand what Smalltalk is anyway.
For people that know Smalltalk, "a Smalltalk environment" contains more information than "an IDE, OS rolled into one" (which you also could possibly apply as a description to some javascript environments or a whole number of other things that could exist, it is not like Smalltalk is the only way to build such an environment)
You can use Pharo with git and github outside the box if you are using MacOS or Linux, there are some issues I think with Windows. Pharo uses Filetree which export source to files and makes commits , pulls , pushs etc. Gitfiletree allows filetree to be managed by git from inside Pharo without the use of a terminal but you can still use the terminal if that is your thing. I explain filetree, git and github in this video
Incidentally, even back in the day with the original Smalltalk-80 the "source" was available in a plain text sources file and the programmer's changes and additions were available in a plain text changes file which were in-sync with the image file.
Of course, arbitrary code could be exported in text files from the "binary image" file (even if that required code to be de-compiled from bytecode to text).
The source still is available as source code, so tools can work with that. The standard in the Smalltalk world is Monticello, I hope they added good tooling around it (the implementation I've seen was painful if you had ever used mercurial, git or even SVN, but I don't know how things are with Pharo)
No it does not , but there is no need. Pharo can be distributed with your application and it does need to installed its a standalone.
"or does it require an interpreter or VM at runtime?"
its interpreted to byte code and it has a JIT VM. It is always runtime ;) Meaning everything is live and running even your source code. Compilation happens under the hood without the user being aware of it.
"Can applications be built from command-line (or a build script on a CI server), or is it tightly coupled with the IDE?"
There is a command line interface , also any method can be exported to command line and Pharo can run without a GUI.
"The Wikipedia article mentions some web frameworks, but the Pharo website shows screenshots of what appear to be desktop GUI applications (or maybe data visualizations running inside the IDE, a la R with RStudio?)."
There is a web framework which quite popular and actively developed Seaside that allow you to use javascript , html and the usual suspect. Plenty of others frameworks exists as well but not so actively developed. Most success stories in the web site use those frameworks.
"Maybe someone with some hands-on experience could provide a TL;DR, for those who aren't willing to read the full book just to get a high-level sense of this?"
you can also drop in IRC for general directions, and ask questions to the mailing list, the community is very welcomed for newcomers. But give pharo a try and ask questions and you wont regret it Pharo is a great way and fun way to create software.
I have made also video tutorial for newcomers
https://www.youtube.com/watch?v=Ol5ivaEATLQ&list=PLqbtQ7OkSt...
I have also made this simple guide to explain what Pharo really is
http://thekilon.wix.com/pharo-about