When comparing Scratch vs F#, the Slant community recommends Scratch for most people. In the question“What is the best programming language to learn first?” Scratch is ranked 18th while F# is ranked 30th. The most important reason people chose Scratch is:
Code is represented as [visual building blocks](http://www.instructables.com/id/How-to-use-Scratch/) that makes it easy to understand how a program is put together.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Visual
Code is represented as visual building blocks that makes it easy to understand how a program is put together.
Pro Great starting point for kids
Scratch was developed specifically for kids ages 8 and up as an exciting way to introduce them to technology. It's designed to be easy to learn, but still provides good depth in computational thinking.
Pro Easy to learn
Scratch is designed to teach computational thinking rather than focus on specific syntax. It was designed specifically to be easy to learn for anyone over the age of 8.
Pro Highly structured
The language is highly structured. Therefore, it gives you the essentials of how to think like a programmer and teaches you good programming practices from early on, so you could write clean, working and readable code in the future.
Pro No need to be able to type
Pro Can be used to create games
Pro Concise syntax
F#'s syntax tends to be terse while remaining very readable and easy to understand without being a chore to write.
Pro Easier transition from other paradigms
Since F# is not a purely functional language, it lends itself to being more easily picked up by programmers that have experience with other paradigms.
Pro .NET Interoperability
Since F# runs on the Common Language Runtime or CLR, it has access to the entire .NET Framework, as well as libraries written in other .NET languages such as C#, VB.NET, and C++/CLI.
Pro Multiplatform, it runs on .Net Core
Forget Xamarin and Mono. F# now runs on the multiplatform .Net Core!
Pro You can run F# in the browser
Thanks to a project like Fable, you can write and run your client app in F# and run it over JavaScript. It allows you to share code between your server and client.
Pro Natively supported by Visual Studio
This is a .Net language natively supported by Visual Studio. Though it is not as tooled up as C# the support is still substantial. In particular, C# deployment scenarios can be enabled for it with small C# wrapper projects. Integration with Visual Studio provides: IntelliSense, debugging, projects an other features.
Pro Fall into the pit of success
F# directs you into a workflow where the right way is the path of least resistance.
Coming from a C# background, its restrictions might feel arbitrary at first (e.g., what do you mean my code has to be in dependency order!? Arbitrary alphabetical or bust!), but you'll soon realize that your code is cohesive, concise and consistent in a way that it never was before - and you can compile and run with confidence!
Pro F# is supported by Xamarin
Thanks to Xamarin, F# is a functional language that you can use to build for iOS, Android and Windows.
Cons
Con For kids
For kids.
Con Won't get you a job
Scratch is not a language used in the workplace. Instead it teaches computational thinking, helping to create a foundation to aid in learning other languages.
Con Does not teach you programming
Learning Scratch might help you if you have high difficulty with logical thinking. However, starting with a proper programming language, especially an easy one, will give you the benefits of starting with something like Scratch and everything else.
Con Strange OOP
Scratch has a very strange implementation of OOP that is sprite based, and will become very confusing when you move to other languages.
Con Weird
It's straight up weird.
Con Has no ad-hoc polymorphism (á la Type Classes)
You have generics, you have interfaces, you have inheritance, you have a lot of things at your disposal but you don't have Type Clases. They can be emulated using some clever constructs but there's nothing like having the real thing.
Con Infested with OOP
Still relying on .NET OOP libraries.