|
PeejayAdams wrote: that a good Java programmer is likely to provide a lot more long-term benefit in a .NET shop than a lousy C#
Very true. Our team have done that precisely. There was just close to NIL learning curve, when our team (MS/C#) had to do something in Java, except for Settings up environment & grasping some syntax tweaks.
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy Falcon.
|
|
|
|
|
Vunic wrote: syntax tweaks
Exactly, my team handles various projects, some new(angular js and other fancy stuff) ,some old(C# and VB.Net). It surprises me when some people (most of them) are willing to work on a badly implemented C# project instead of a well build VB.Net just because VB.Net sounds like an "older technology".
I tried to convince them that both the languages in .Net are more or less the same except for some syntax differences for which, a simple google search is always an option.
But somethings you just can't expect people to understand.
I am not the one who knocks. I never knock.
In fact, I hate knocking.
|
|
|
|
|
I dunno. I'm a C++ expert more than I'm any other thing, and that has worked pretty well for me career-wise. Perhaps there's a difference in how powerful being an expert in C++ makes you, versus python (igniting flame war).
|
|
|
|
|
It is a language that I am seeing a lot from my kids in high school, one has it for ICT and another has it for a lunchtime computer club
Every day, thousands of innocent plants are killed by vegetarians.
Help end the violence EAT BACON
|
|
|
|
|
Python, Java, iPads; as long as it is non-Microsoft "to prevent a vendor-lock in".
..and that attitude helped to create a lot of new 'institutes' that teach .NET in the past years. Most universities and academics would shudder of .NET / Visual BASIC courses
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I don't know. I made good living hanging around Microsoft platform/tools for 30 years. Never ventured too far from it. If I were to stay mainly in small shops and startups, my experience might be different, but all my experience had been with bigger companies/government so they are not shy licensing expensive tools.
|
|
|
|
|
A parallel observation/opinion:
For Chemistry (or as I refer to it, "real life") I went to a graduate school with some rather prestigious faculty. One noted, on the first day of his Advanced Inorganic Chemistry course that 'any of you that does as a faculty member the same research they did as a graduate student is doomed to oblivion' It jived with my opinion.
If your degree's any good, a PhD. really means "will train" - because you should have learned one most important thing in all those years . . . to learn how to learn.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
because it is the web programming language of choice for the anti-Microsoft crowd.
That and Django Unchained
|
|
|
|
|
Yes and in practical terms that means Amazon even more than Linux
|
|
|
|
|
The cybersecurity sector leans heavily on Python, so it's seeing a lot of exposure lately.
It's also becoming a common learner language.
"There are three kinds of lies: lies, damned lies and statistics."
- Benjamin Disraeli
|
|
|
|
|
Python can be quite impressive. To name a few things:
1) Huge 3rd party support and many very decent libraries, and some really interesting stuff, including things like AI, deep learning, etc.
2) IDE's - Visual Studio, JetBrains PyCharm, umm, Eclipse, including debugging
3) Project Jupyter is cool
4) It's usually more concise than C#. Example.
5) It can be impressive:
>>> 2**160
1461501637330902918203684832716283019655932542976
6) Cross platform -- I develop UI's and custom SBC hardware controllers in Python, and can write and debug the code (mocking the hardware I/O) in Windows and test it, move it over to the Debian box, and it works.
7) Django for web hosting is actually cool and well thought out, more so than Ruby on Rails, IMO, but then I'm biased against anything Ruby.
8) Brain dead simple to interface to C code, and more importantly, to build the library that can be imported into your Python app.
9) Docker / container support is trivial. Interfacing with Docker using Python is trivial.
10) Ruby is dying. Thank God.
11) My experience with Ruby was entangled with experiences of egoistic developers, similar to what I experienced when Java was all the rage. With Python, the egoism seems to be considerably toned down. That's important to me because egoistic developers tend to be dangerous, biased, opinionated, arses to work with. And they're actually really bad coders too.
Cons:
1) It's slow, of course, being interpreted
2) If you want speed, code it in C (I personally haven't tried Python with C++)
3) It's scripted. PyLint helps to catch many stupid typos and construct errors that a C# IDE would redline for you before you even hit Build.
While I'm forced to deal with Javascript/HTML/CSS (believe it or not, I still have to get my toes wet with TypeScript or similar) and occasionally SQL, C# is my language/bias of choice, Python is my go-to language for SBC and container development. At some point I'll probably poke at Go.
For a lot of things, it's quite decent but so is, for example, C#, unless you're doing something specific where the answer is "Python would make this soooo much easier."
|
|
|
|
|
Thanks for your summary! Very helpful list!
|
|
|
|
|
Syntactically Python is one of the worst languages that are developed recently. Maybe there are others like that, I don't know. This is one of the languages where 'nothing' matters, as in white spaces define the structure of the program. Code reviews are made almost impossible because instead of answering a question 'is the program structure as-is correct?' you need to answer a question 'which of all possible structures would be correct?'. Simple yes/no becomes 'design same program that you're reviewing on the spot and see if you come up with same result'. Example:
if (x)
something()
somethingelse()
Should somethingelse() be indented like this? If that code is already indented by 5 levels, maybe somethingelse() needs to be pulled back one level? two? three? People can't indent properly in languages where indentation is not important (curly brace languages, for example), and you'd expect them to indent something correctly where it is important?
The initial hype came by showing: look, it's simple, i type '2+3', it prints '5'. An over-glorified calculator. Next, they print 'hello world' and see on console 'hello world', and it only takes one line of code instead of 10. Great. It makes simple things simpler and hard things almost impossible.
There are tons of libraries written in Python, but i haven't seen data about how efficient Python is for developing these libraries, as opposed to some languages with static typing.
Less lines of code does not mean it is overall efficient. Look at code golf on Stack Overflow, they solve small but relatively complex problems there using programs written with 10-20 Unicode characters that are incomprehensible for most developers.
Writing a program is about 10% of the effort, maintaining it is another 90%, and languages should be such that maintenance is easier. Maintenance is not 'figuring out what the program does'. That part is trivial, run it through debugger with single-stepping and you see what it does. Maintenance is like any other reverse engineering, where you try to 'figure out what the developer was thinking when they developed that program'. With the example above it is not possible to say for sure if somethingelse() was thought of being part of that condition block or not. You'd need to reverse engineer the entire algorithm in that function, then think if you'd do it in the same way, and if you disagree, you'd do it differently, probably introducing more bugs because you don't have any guidance about original thinking. There are too many paths through the code where the implementation can get forked by indentation errors, each line after the first one in if() statement should be questioned if it has proper indentation. If {} are around the block, you can auto-format the code to make it readable and then look at the algorithm on single path and check it for correctness. It is less likely to place somethingelse() erroneously inside or outside a block than to indent it by incorrect number of spaces.
|
|
|
|
|
I agree. Folks throw hate at the C-style syntax, but at the end of the day, the semicolons & squiggly parentheses make the code determinant. Oh, and C code can be very succinct.
|
|
|
|
|
atali wrote: as in white spaces define the structure of the program.
Yeah, it takes a little bit to get used to, but not much more than the C# style of
if (foo)
{
}
else
{
}
vs. the Javascript (and older C style, I think) style of:
if (foo) {
} else {
}
Python at least uses colons, so you're example should be:
if (x):
something()
Some FP languages (Haskell, Occam, F#) also use whitespace indentation, and once you get used to it, it's rather nice, IMO.
|
|
|
|
|
You're missing the point. A misplaced space in Python completely changes the structure of the program. In curly braces languages you can format the program as an ASCII art, and it still works just the same.
|
|
|
|
|
Marc Clifton wrote: Brain dead simple to interface to C code... If you want speed, code it in C (I personally haven't tried Python with C++)...While I'm forced to deal with Javascript/HTML/CSS
I am hoping that the domain of the problems for those two do not overlap.
Marc Clifton wrote: For a lot of things
For the vast majority of things in the broad scope of all businesses any technology is sufficient. That is because the problems do not originate in the technology but rather in the vast array of other impacts that are involved in delivering something that works (as defined by the business).
And because of that a significant factor in technology choice is nothing more than familiarity. Better to choose a tool that one knows, both how to use well and the limitations, rather than attempting to rationalize the choice for an unknown tool based on subjective views on it.
|
|
|
|
|
Wonderful summary.
Starting to think people post kid pics in their profiles because that was the last time they were cute - Jeremy Falcon.
|
|
|
|
|
When ever I see the word 'expert' it always reminds of a quote (can't remember from where):
"An 'ex' is a has been, and a 'spurt' is a drip under pressure".
I never want to be an expert, but I will settle for competent or knowledgeable.
A human being should be able to change a diaper, plan an invasion, butcher a hog, navigate a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects! - Lazarus Long
|
|
|
|
|
>"An 'ex' is a has been, and a 'spurt' is a drip under pressure".
I first heard it from CPO Pertwee in The Navy Lark in the 60s or 70s.
John
|
|
|
|
|
Another reason is that a lot of the most popular artificial intelligence frameworks are written in Python being that it is the preferred language of many academic institutions.
if (Object.DividedByZero == true) { Universe.Implode(); }
Meus ratio ex fortis machina. Simplicitatis de formae ac munus. -Foothill, 2016
|
|
|
|
|
Python is the new Pascal.
Good for learning, rarely used to run a business.
|
|
|
|
|
Oy! I like Pascal (especially in the Borland Delphi flavours) and I did develop/run business software in it (and the business was very grateful!)
|
|
|
|
|
PIEBALDconsult wrote: rarely used to run a business.
On a corporate level, yes, I agree with this. However, I know for a fact that many game development companies (AAA in fact), use Python/Django/etc. for their websites and web stuff, exclusively. Also, I am seeing an influx in MongoDB for the back-end on a lot of these gaming sites.
Gaming may not be a big deal with a lot of the members here, but it is a multi-billion dollar industry. Just saying...
|
|
|
|
|
Python is so much more than a language.
It is a tool for power, for dominance, for fighting back against anyone who attemtps to put any other infrastructure, any other way to organize your files, any other way to distribute updates... Python has got its own. Once you have succeeded in getting Python into your organization, you can disregard a whole lot of the stuff you earlier had to take into consideration: The OS, the standard libraries, interfacing to other systems... You can do it your way, you are the one mastering it.
I am working in a development environment using several different languages and development tools. Everyone but the Python guys cooperate and coordinate with the others, but the Python guys turn their back to the others: Sorry (or not really sorry) - we do things in a different way in Python! They demand that all company wide solution be those that fit the Python infrastructure; it is impossible for them to accept general solutions. Rather, they present (or develop themselves, in the back office, halfway in secrecy) Python specific solutions applicable for Python only. Their answer to the question of general applicability is simple: Just switch everything project to Python!
This is certainly not specific to our company. I see it everywhere I meet other software people, in the professional media, everywhere Python is mentioned, it is with a disregard for everything non-Python. Python (and Python people) take care of themselves, ignoring others.
Python is a tool for dominance. Those who manage the Python infrastructure - the thousands of Python packages, the Python specivic distribution mechanisms, the structure of the Python directories, the ways to identify tools and versions and files and everything, ... - have so much power over the entire software development process, compared to one who has learned another dotNet language that fits nicely into the the existing infrastructure.
Btw, Python is not the only software used as a dominance tool. The containerisation software (and people) are the same way: Forget your old ways of managing software build environments, do as we tell you to! Sure, you must redo a lot from bottom up, because we tell you to isolate yourself from your old OS, your old file system structures, your old build software, your old artifact handling - that's the whole pupose of it: Do it as we tell you to!
That's power - to us who master that specific tool!
|
|
|
|
|