Good advise to the OP but 90% was replied to me.
Yes, that's true; 90% was replied to you, not the OP. That's pretty common around here so until now I hadn't considered it rude. I guess it kinda is, though.
@OP; hope you don't mind.
Part of my field is forensics in which I find certain signature matches which tell me if a prog is malicious or not. The term signature is used quite a lot I agree.
What type of 'signature' is it? How do you define the signature? Is it based upon a series of bytes found to be similar to known infections or is it more in-depth? Binary pattern searches tend to yield lots of false-positives and are easily avoided with repackaging, which can be automated. Other methods, often employed by intelligent 'real-time' protection processes, include API monitoring and memory scanning. So, what other methods do you use? Is your use of "signature" merely the binary pattern or is there more to it?
Java is not better for prospective graduates.
Many schools in Europe dropped C# courses, favouring Java instead. The reason for this is not that Java is 'easier' than other languages but rather that there are more developer opportunities world-wide for Java developers than C#. Also, because of the similarities between Java & C#, a student well-versed in Java can conceivably also get a job doing C# with little trouble. In this way, Java is far more valuable in a student's arsenal than C#. Java is supported on numerous platforms and by multiple operating systems. C#, by comparison, has very little support. Though the 'mono' project is attempting to bring .NET support to other platforms, it's not nearly as mature or featureful. To be plain, Java is just 'better'; more flexible, more featureful, more capable, better support, more popular, etc.
It's vital for the future of an educational institution to be able to ensure viable employment for graduates. Thus, because Java developers have far better employment possibilities, it's vital for them to teach Java. Now you may wonder why they wouldn't teach both languages. Well, teaching a language involves some cost for the institution and requires more of students. Making both courses required would extend the number of courses, and thus the amount of time, to obtain a graduate degree. After some deliberation, it was determined that the costs for teaching C# were higher than potential benefits. The fact that Java developers could more easily adapt to a C# environment than vice-versa helps to illustrate that spending resources on teaching C# is effectively a waste, even with special support from Microsoft. Do understand, however, that this was primarily in Europe(and potentially other areas). In the US, an educational institution escaping Microsoft isn't really an option.
Java is widely used because it's easier to manage for beginners than C++ amongst other reasons. I don't agree with your opinion. Although, I do feel that Java is slowly becoming more popular than C++ as well as for business applications. As for #, I've never used it so I can't comment on its similarities to Java.
Java sources are easier to deploy on multiple platforms than C++ simply because the sources compile for a virtual machine rather than depending upon specific features provided by the underlying system's C++-supporting implementation. POSIX is pretty widely supported with the primary exception being Windows. This one [very sad] fact means that porting C++ programs to and from Windows is made a bit more difficult than Java.
The .NET platform was created to utilize similar features as Java. That is; code is 'compiled' to run within a supporting platform rather than running on the native system. Java does this by porting the JVM to various systems and then code need only be compiled for the JVM..it never actually runs on the native system. .NET then does the same, relying upon programs to provide support for the .NET framework. Thus, in the same way, .NET code never actually runs on the native system. However, .NET is heavily flawed as it is still designed with a heavy Windows prejudice. This means that creating a proper port(aka 'mono project') is hindered because underlying systems adhere to actual standards established by parties outside of Microsoft.
My 'opinion' that educational institutions that teach or at least focus on C#/Java instead of C++ are crappier than those which provide adequate education of C, C++, and preferably ASM is largely due to the percentage of graduates that wouldn't properly understand the above paragraphs with respect to system implementation support. Additionally, many students of such institutions tend to learn(or otherwise assume) that C++ is a
replacement for C and
thus C# is a
replacement for C++. Neither are true. Furthermore, I'm admittedly very biased; I prefer lower-level development(like OS & embedded development). That means I'm far more interested in designing & implementing the JVM or the .NET framework support than in using the language. You cannot create the JVM in Java; it must be written in C, C++ or some other language that compiles to run natively(and preferably something that can actually do ASM...just try doing inline assembly in C#). Likewise, you cannot create support for the .NET framework using .NET. Certainly an operating system cannot be created strictly in .NET or Java(they've tried...they failed).
And so, I surrounded the term "opinion" in single-quotes(apostrophes) above because it is not just an opinion; it is fact.
I noticed my RAT comment, for some reason I was thinking of reverse TCP payloads being different for windows and nix. Hence, using a language that would offer easy ports to different systems. If you say otherwise then the OP should be set. I might be misunderstanding Python since it's the language I'm learning now.
Actually, using Python wouldn't be a bad idea as a start. However, I wouldn't want to deploy it as a script on a remote system. For that, you definitely want a compiled EXE. However, using Python for development could ease many things along, especially rapid feature additions. If nothing else, it'd be good for developing the structure before moving to another language.
I guess I understand your thoughts on portability but again, it'd have to be compiled for the target as you can't expect a Python interpreter to be installed and easily accessible. However, none of that would matter for TCP between systems.