Earlier quoted context omitted.
F# isn't listed on any of your charts. I think it's probably popular enough to show up in all of your data sources at this point. Also, maybe add GitHub and StackOverflow as data sources?
F# should probably go there, yeah. GitHub and StackOverflow started out really biased in terms of their communities - GitHub with Ruby, and StackOverflow with Microsoft languages. Do you think they've sufficiently lost that bias?
F# enters Tiobe top 20 index for the first time
11–20 of 30 posts
Re: F# enters Tiobe top 20 index for the first time
#12From the full article: The confidence of the SuperCollider programming language has been set to 80%. The reason for this is quite funny. In order to prove that the TIOBE index can be manipulated easily, Adam Kennedy created an empty Perl library called Acme-SuperCollider-Programming. This was to boost the unknown programming language SuperCollider by adding it to Perl's popular library archive CPAN. Now 20% of all +"…
Who has a better methodology? Is there even a good one?
Having working with the raw data, it was pretty fantastic. Segemented by industry/business size, handled issues with multiple programming languages or companies where one section used one language and another used other ones, etc. We even knew which tools and add-ons were used for which languages and which compiler on each platform (i.e. how many commercial shops using C++ targeting linux are using gcc vs. icc?).
But that data was also stunningly expensive. My marketing friends tell me that accurate market data always is.
Re: F# enters Tiobe top 20 index for the first time
#13Some F# to ponder: type LogicGate = | ON | OFF | NAND of LogicGate * LogicGate | NOT of LogicGate | AND of LogicGate * LogicGate | OR of LogicGate * LogicGate | NOR of LogicGate * LogicGate | XOR of LogicGate * LogicGate | XNOR of LogicGate * LogicGate let rec evaluate input = match input with | ON -> true | OFF -> false | NAND(a, b) -> not ((evaluate a) && (evaluate b)) | NOT(a) -> (evaluate (NAND(a, a))) | AND(a, b…
open System
open System.Collections.Generic
open System.Reflection
type Config = string
type ISuperPlugin =
abstract member Name : string
abstract member Initialize : Config -> unit
let loadedPlugins = Dictionary()
let isPlugin (tp: Type) =
tp.GetInterfaces()
|> Seq.exists (fun t -> t.GetType() = typeof)
let isPluginLoaded plugin =
match loadedPlugins.TryGetValue(plugin) with
| true, v -> true
| _ -> false
let loadPlugin typ = () // implement this
let LoadPluginsFromAssembly path =
let asm = Assembly.LoadFrom path
asm.GetTypes()
|> Seq.filter isPlugin
|> Seq.filter (fun t -> not (isPluginLoaded t.Name))
|> Seq.map loadPlugin
|> ignore
let loadAllPlugins plugins =
plugins
|> Seq.map (fun p -> async { LoadPluginsFromAssembly p })
|> Async.Parallel
|> ignore
Loads a bunch of plugins from assemblies in parallel. Haven't tested it but it should work with minor modifications to make it thread-safe.Re: F# enters Tiobe top 20 index for the first time
#14Earlier quoted context omitted.
F# should probably go there, yeah. GitHub and StackOverflow started out really biased in terms of their communities - GitHub with Ruby, and StackOverflow with Microsoft languages. Do you think they've sufficiently lost that bias?
If nearly all ruby programmers put their code on github, and you don't count it but you do count google code, then isn't that a bias i the sample? Wouldn't it make more sense to include all the major code hosting sites, including github?
Re: F# enters Tiobe top 20 index for the first time
#15Earlier quoted context omitted.
If nearly all ruby programmers put their code on github, and you don't count it but you do count google code, then isn't that a bias i the sample? Wouldn't it make more sense to include all the major code hosting sites, including github?
Google's Code Search just searches for code on the internet.
Re: F# enters Tiobe top 20 index for the first time
#16Go was a winner of 2009, RPG (OS/400) is more popular than Haskell or Erlang. Sure this is a joke.
Re: F# enters Tiobe top 20 index for the first time
#17Some F# to ponder: type LogicGate = | ON | OFF | NAND of LogicGate * LogicGate | NOT of LogicGate | AND of LogicGate * LogicGate | OR of LogicGate * LogicGate | NOR of LogicGate * LogicGate | XOR of LogicGate * LogicGate | XNOR of LogicGate * LogicGate let rec evaluate input = match input with | ON -> true | OFF -> false | NAND(a, b) -> not ((evaluate a) && (evaluate b)) | NOT(a) -> (evaluate (NAND(a, a))) | AND(a, b…
public abstract class LogicGate
{
public abstract bool Evaluate();
}
public abstract class BinaryLogic : LogicGate
{
protected LogicGate a, b;
public BinaryLogic(LogicGate a, LogicGate b)
{
this.a = a;
this.b = b;
}
}
public class ON : LogicGate
{
public override bool Evaluate() { return true; }
}
public class OFF : LogicGate
{
public override bool Evaluate() { return false; }
}
public class NAND : BinaryLogic
{
public NAND(LogicGate a, LogicGate b) : base(a, b) { }
public override bool Evaluate()
{
return !(a.Evaluate() && b.Evaluate());
}
}
public class NOT : LogicGate
{
LogicGate a;
public NOT(LogicGate a)
{
this.a = a;
}
public override bool Evaluate()
{
return new NAND(a, a).Evaluate();
}
}
public class AND : BinaryLogic
{
public AND(LogicGate a, LogicGate b) : base(a, b) { }
public override bool Evaluate()
{
return new NOT(new NAND(a, b)).Evaluate();
}
}
public class OR : BinaryLogic
{
public OR(LogicGate a, LogicGate b) : base(a, b) { }
public override bool Evaluate()
{
return new NAND(new NOT(a), new NOT(b)).Evaluate();
}
}
public class NOR : BinaryLogic
{
public NOR(LogicGate a, LogicGate b) : base(a, b) { }
public override bool Evaluate()
{
return new NOT(new OR(a, b)).Evaluate();
}
}
public class XOR : BinaryLogic
{
public XOR(LogicGate a, LogicGate b) : base(a, b) { }
public override bool Evaluate()
{
return new AND(new NAND(a, b), new OR(a, b)).Evaluate();
}
}
public class XNOR : BinaryLogic
{
public XNOR(LogicGate a, LogicGate b) : base(a, b) { }
public override bool Evaluate() { return new NOT(new XOR(a, b)).Evaluate(); }
}
class Program
{
public static void Main(string[] args)
{
var on = new ON();
var off = new OFF();
var result = new List()
{
new NAND(on, off),
new NAND(off, on),
new NAND(on, off),
new NAND(on, on)
}
.Select(x => x.Evaluate());
Console.WriteLine(result);
}
}Re: F# enters Tiobe top 20 index for the first time
#18Earlier quoted context omitted.
Who has a better methodology? Is there even a good one?
If that was a serious question, places that do developer tools and programming languages for a living (at least MSFT, I assume others as well) pay ridiculous amounts of money to independent third-party companies that specialize in gathering this kind of data. The raw data was then kept fairly private (marketing + upper mgmt only), but the rank and file would see some of it occasionally when things such as trends on t…
Re: F# enters Tiobe top 20 index for the first time
#19Re: F# enters Tiobe top 20 index for the first time
#20Some F# to ponder: type LogicGate = | ON | OFF | NAND of LogicGate * LogicGate | NOT of LogicGate | AND of LogicGate * LogicGate | OR of LogicGate * LogicGate | NOR of LogicGate * LogicGate | XOR of LogicGate * LogicGate | XNOR of LogicGate * LogicGate let rec evaluate input = match input with | ON -> true | OFF -> false | NAND(a, b) -> not ((evaluate a) && (evaluate b)) | NOT(a) -> (evaluate (NAND(a, a))) | AND(a, b…
type LogicGate = | ON | OFF | NOR of LogicGate * LogicGate | NOT of LogicGate | AND of LogicGate * LogicGate | OR of LogicGate * LogicGate | NAND of LogicGate * LogicGate | XOR of LogicGate * LogicGate | XNOR of LogicGate * LogicGate
let rec evaluate input =
match input with
| ON -> true
| OFF -> false
| NOR(a, b) -> not ((evaluate a) || (evaluate b))
| NOT(a) -> (evaluate (NOR(a, a)))
| OR(a, b) -> (evaluate (NOT(NOR(a, b))))
| AND(a, b) -> (evaluate (NOR(NOT(a), NOT(b))))
| NAND(a, b) -> (evaluate (NOT(AND(a, b))))
| XNOR(a, b) -> (evaluate (OR(AND(a, b), NOR(a, b))))
| XOR(a, b) -> (evaluate (NOT(XNOR(a, b))))
[
NOR(OFF, OFF);
NOR(OFF, ON);
NOR(ON, OFF);
NOR(ON, ON)
] |> List.map (fun x -> printfn (evaluate x))