7 ms·
Can someone please explain to me how you can use F# without each aspect of the development process being a Microsoft technology? Not to be rude, I just honestl
by kyleperik 8y ago
Can someone please explain to me how you can use F# without each aspect of the development process being a Microsoft technology?
Not to be rude, I just honestly want to know. There is quite a bit of hype around C#, F#. But every time there is a comparison to other languages it seems to skip over the fact that you much have a windows computer running Visual Studio which is a big disadvantage to some people. Quite honestly, they are great languages. I just don't want to buy in completely to Microsoft
- nikofeyn 8y agois it microsoft or windows you are against? basically all of the f# toolchain is open source, and it runs perfectly fine on all three major os platforms using either .net framework (windows), .net core (cross-platform), or mono (cross-platform). most people either develop f# in visual studio or using visual studio code. same goes with c#. .net core, which is intended to be fully cross-platform is the future of .net.
- kyleperik 8y agoI understand there exists .net core and mono. I'll give them mono. My problem is I haven't seen a single example of a practical application written in .net core or a company that uses it, everything is .net framework. There just aren't many available alternatives to the frameworks and packages that are those who use .net framework take for granted. I hear what they're saying about it's the future, but I have yet to see the fruit of it. To me .net core seems more like just a buzz word to prove that they like open source and anyone can use their software. But there isn't any way to monitize it so there isn't any reason for them to focus on it.
- nikofeyn 8y agowell, i don't know what to tell you. i am not really here to defend or market for the world's most valuable company. all i know is that my understanding is that .net core is the future of their .net stack and they are doing things that show that. for example, with .net core 3.0, there are desktop packs for uwp, wpf, and windows forms so that you can develop even your windows apps for .net core. so even on windows, .net core is quickly moving to replace .net framework for new projects. of course old projects will likely lag being so attached to the .net framework. that's the case for any technology platform transition. also, on a technical point, .net core is fast, faster than .net framework and mono.
- math 8y agoquite the contrary, people are quickly moving away from the .net framework towards .net core, which is now objectively better and moving at a fast pace. I help maintain a popular open source library for .net. We develop on MacOS using VS Code (only use Windows for testing) - the experience is good. We have many large customers (brands you would know), and .NET Core support is important to pretty much all of them. https://github.com/confluentinc/confluent-kafka-dotnet https://github.com/confluentinc/confluent-kafka-dotnet
- Xeronate 8y agoFWIW I work for a large public tech company and we have a major portion of our microservices written in .net core deployed on linux containers in AWS.
- jugg1es 8y agowe're running a ton of .net core docker containers at my company. C# is really a great language and now you can run it on anything. If you haven't seen it yet, it's because you aren't looking that hard.
- atombender 8y agoThe last time I brought this up on HN, I received a comment [1] from one of the people who work on F# at Microsoft: F# is fundamentally a .NET language ... It's impossible to divorce the two, even if the target runtime environment is not necessary a .NET runtime. Those other environments inherent language design decisions made with .NET as a target runtime. The .NET runtime with .NET Core is indeed minimal, is natively supported just about everywhere, and was built with cross-platform in mind. F# is a part of this, for better or worse. I like F# a lot, and to me it comes across as something of a cleaner, more modern OCaml. I have zero interest in .NET and its toolchain, and I don't want the baggage of its runtime or VM. [1] https://news.ycombinator.com/item?id=17936732 https://news.ycombinator.com/item?id=17936732
- kazinator 8y agoIt strikes me as nonsense. Let's take the paragraph and replace "F#" with "C", ".NET" with "PDP-11", and "Core" with "V6 Unix". Come on, surely you can make a non-.NET dialect of F#. Sure, not every .NET F# program will be portable to it. There must be some considerable abstraction in F# that isn't tied to .NET.
- bonesss 8y agoCan you make a language that looks like F# and compiles? Sure. Can you make F# the language meaningful on other VMs? Not really, as F# is a deep, deep, .Net language. This isn't about abstraction or syntax, it's that every concept, feature, and element of the toolchain bases itself on .Net capabilities and considerations. From referencing libraries, to scripting, to type generation at specific points in the compile cycle to support Type Providers... Async computation blocks... Remember, F# came from MS research based on the established working .Net framework, and was tighly tied to fundamental framework improvements (like generics and dynamics). It was built by hardcore .Netters, it's the first "true" .Net language, and it bases major language features on deep-down .Net capabilites not found in other VMs. The point of the quote is that if you were to try this, at best you'd get "OCaml Over There", not "F#", since F# without .Net is "OCaml". It's not the syntax, it's the deeply intertwined nature of everything else.
- zamalek 8y ago> I haven't seen a single example of a practical application written in .net core or a company that uses it We[1] have multiple teams working with it right now (we're strangling our netfx 4.6 monolith), and some of those teams have already pushed their work to production. The big advantage that I've seen is that it puts teams in charge of their own destiny. I remember the upgrade from netfx 2.0 to netfx 3.0: it was awful. The entire codebase had to be upgraded. Customers had to be upgraded to netfx 3.0. If another vendor futzed with and broke the machine.config, we'd break. With netfx you are perpetually behind the curve and at the mercy of the admin, especially if on-prem is a concern. netcore is xcopy deployment, runtime and all. You can use netcore on alpine[2] (netfx only works with Windows containers). > there isn't any reason for them to focus on it. 1. Even if nobody was using it, I bet Microsoft would use it themselves. It is so much better than netfx. 2. Azure. It does run outside of Azure, obviously, but the Azure integration in VS is a powerful bait and hook. Plus, for something that there's no reason to focus on, they are certainly putting a lot of focus into it. Even if I haven't figured out the true reason to focus on it, there clearly has to be one. > There just aren't many available alternatives to the frameworks and packages That was an issue up until, maybe, a year ago. Most packages have netstandard (a build target that works with netfx and netcore) support nowadays. If they don't, they are probably unmaintained. [1]: https://www.k2.com/ https://www.k2.com/ [2]: https://hub.docker.com/r/microsoft/dotnet/ https://hub.docker.com/r/microsoft/dotnet/
- openIce 8y agoWhat? Do you even work in the industry? Everyone is moving more and more towards .net core. I work at a big old school finance company and all new development is done with .net core
- victorNicollet 8y agoWe migrated the compiler and virtual machine for our DSL, our ETL pipeline, and our machine learning code (traditional & deep) to .NET core on Linux earlier this year. We are impressed with the performance and stability, and the developer experience has significantly improved since the mess two years ago. We are a tiny bit miffed at some missing features, though (especially in System.Reflection.Emit).
- bluehatbrit 8y agoI'm not sure where this is coming from. I work at a ftse 100 company and all of our newner microservices are .net core. Almost every team in the org has some .net core running and we're slowly moving framework projects over to it. It's definitely not just buzz, it just takes time for a company to begin adopting a radically new platform with so many differences to it. I also have many friends in other .net based orgs and they've each got similar things happening in their companies. Release of core happen on a pretty regular basis and we've not seen any issues with Microsoft not putting time and effort into it.
- bishala 8y agoTencent FiT, a division of Tencent have been using .NET Core in production for a while now https://customers.microsoft.com/en-us/story/tencent-telecommunications-dotnetcore https://customers.microsoft.com/en-us/story/tencent-telecomm...
- azhenley 8y agoI have a Mac and it runs VS Code and .Net Core nicely. Very smooth process to get it setup.
- akra 8y agoWhen I use F# on Linux (my main machine) I use VS Code on Linux and it seems to work fine once setup properly and it has all the minimal features (e.g rename, find usages, etc). I've heard Rider as an IDE has F# support now as well. You typically use the command line with the "dotnet" command to create projects and such. Still Microsoft technologies however they can run on Linux.
- knocte 8y agoI exclusively code F# with MonoDevelop in Linux, unless I want to code for mobile (iOS/Android) in which case I open my mac. No Windows.
- jugg1es 8y agoIf you want to write apps in the Apple environment, you also need to use xcode. What's the difference?
- kbenson 8y agoThere isn't necessarily much of one, but since that's a reason why a lot of people don't write apps for Apple systems, it's no less valid a question.
- seanmcdirmid 8y agoThat used to be true, but times are changing. Visual Studio Code + .Net Core mean you can program in C# and F# even on a Mac now. I've been using TypeScript as my main language for the last couple of years since leaving Microsoft. However, I often find myself really missing how well organized C# was. The reason I don't switch back is the ability to deploy code in a web browser.
- insulanian 8y agoWriting F# in JetBrains Rider on a Mac, and running it in Ubuntu based Docker image in AWS. My colleagues are working on Windows with Visual Studio and Ubuntu with VS Code. True multi-platform, multi-tool development on the same codebase. What more do you need? :)
- thestephen 8y agoWhile this was definitely true five years ago, I'm happily writing C# on a Mac with Rider today, having a great experience. Except for when looking up old documentation mostly relating to .NET Framework, I never feel like a second class citizen anymore. Today, the old "run visual studio on Windows" constraint is more of a "you probably want to code in something that understands the language well, so Visual Studio, VS Code or Rider – but you really don't have to".