When comparing Pharo vs C#, the Slant community recommends C# for most people. In the question“What are the best general-purpose programming languages?” C# is ranked 2nd while Pharo is ranked 18th. The most important reason people chose C# is:
.NET offers rich functionality.
Ranked in these QuestionsQuestion Ranking
In Pharo everything is an object. Compiler - object, network - object, method - also an object. And objects communicate with messages. No operators, no control-flow statements. Just objects and messages. Few things to learn, but you can learn OOP well.
Pro Easily learnt
There is good, free documentation including several books written by experts with extensive examples. There is an online MOOC. There are many tutorial videos. Supportive conferences and community. Even a professional support option if desired.
Pro Live updates
The nature of Pharo being a "live" environment allows you to perform live updates to your system without requiring to restart it. You can upgrade/modify classes while serving requests at the same time.
Pro Highly productive
The framework for developing sophisticated web applications in Smalltalk is developed in Pharo. Seaside lets you build highly interactive web applications quickly, reusably and maintainably.
Pro Remote debugging
Pro Beautiful coding patterns in your IDE
No need to search google for compact beautiful examples of how to do things, your live environment source is available and you can easily live search, see how it works and copy how the masters would do it (examples most languages still copy too).
Pro Glamorous toolkit & GTInspector
Most languages are still copying the Smalltalk tools of yesterday - GTInspector (written in Glamorous) takes live exploration of code/running objects to a new level. It's really slick, and better yet, you can easily write your own inspectors in 10 lines of code.
Pro Code can be run on rock solid GemStone environment
Pro 64 bit support as of Pharo 7
Use 32 bit or 64 bit versions of Pharo on Windows, Mac & Linux
Pro Advanced code analysis tools
MOOSE environment provides extensive, easily leveraged and class leading tools for code analysis and improvement.
Pro Can run headless for production
Pro Really simple networking and REST with Zinc
Pro Graphics, graphing and visualisation framework - Roassal
Roassal and Mondrian provide fantastic and easily used frameworks for graphics, graphing and advanced visualisations (comparable to D3.js) but with much less code. Visualisations can be rendered into web friendly graphics (SVG, .png etc.) without additional work.
.NET offers rich functionality.
Pro 3rd Party support
Lot's of tools and libraries available.
Pro Visual Studio
The Visual Studio IDE offers one of the best development environments. The Community Edition can be used for free.
Pro Can be used in a variety of fields
with Xamarin for Mobile (ios, android)
with .net core asp for server (linux, windows)
with .net core for desktop (windows, mac)
with mono for desktop (windows, linux)
with blazor for web client with webassembly.
However, it is not considered top for any of those categories
top choice for windows desktop with .net framework
top choice for Unity
.net 5 will unify frameworks similar to JVM (just one)
Runs on Linux, Mac, and Windows
Can be designed visually with the Visual Studio designer for traditional Windows forms, WPF, or Web forms.
Pro It is a C like language.
Being a C like language counts in favor for it as a general purpose programming language, given the ease of using existing skills to pick up this language easily.
there are other superior languages that could be used as a general purpose, such as: F#, Haskell, but the complexity of those languages, being functional, make them strange to the usual C Syntax.
C# is better than C whenever garbage collection, Objects, classes, data access, are needed. But C is going to be the choice when hardware access and performance are paramount.
Con Small community
But they are very friendly and supportive. Best help comes through the mailing lists so not always easily googlable. There is also a Slack community where help is nearly instantaneous.
Con Single threaded
Pharo's VM only ever uses one CPU core. If you want to write code that uses more than one CPU core, you need to jump through hoops such as running multiple VMs and synchronising your data.
Con No stable 64 bit VM on Windows yet (work-in-progress)
64 bit support is on its way for Windows (experimental). Pharo 7 has 64 bit support for Mac and Linux as of Pharo 7.
Con Learning curve
For a beginner the .NET framework can be daunting, the rich functionality means that things often can be done in several ways.
Con Microsoft will mess up with the Visual studio installation
And all of a sudden you'll need to reinstall the entire thing just because it stopped working.
Microsoft assumes that every workstation is connected to the Internet then it is always pushing updates.
Con Very large runtime
Cannot be used for embedded programming