Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-22 Thread Laurent Pointal
Chris Angelico wrote:


 Heavy computation might be unideal in Python, but if you can grunge it
 into NumPy operations, that won't be a problem.

May take a look to Pythran too, which generate C++ code from (limited subset 
of) Python code, usable as a Python compiled module or as standalone C++.

https://github.com/serge-sans-paille/pythran

A+
Laurent.

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-11 Thread Roy Smith
In article 52f9b6af$0$11128$c3e8...@news.astraweb.com,
 Steven D'Aprano st...@pearwood.info wrote:

 On Mon, 10 Feb 2014 22:40:48 -0600, Tim Daneliuk wrote:
 
  On 02/08/2014 05:54 PM, Sam wrote:
  I got to know about Python a few months ago and today, I want to
  develop only using Python because of its code readability. This is not
  a healthy bias. To play my own devil's advocate, I have a question.
  What are the kinds of software that are not advisable to be developed
  using Python?
 
 [snip a bunch of good examples]
 
  Applications in which you do not want the casual reader to be able to
  derive the meaning of the source code.
 
 That's a bad example. Do you think that the casual reader will be able to 
 understand the meaning of .pyc files?

No, but anybody with script-kiddie level sophistication can download a 
pyc decompiler and get back a pretty good representation of what the 
source was.

Whether I mind shipping my source, or you mind shipping your source 
isn't really what matters here.  What matters is that there *are* 
people/companies who don't want to expose their source.  Perhaps for 
reasons we don't agree with.  For those people, Python is not a good 
choice.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-11 Thread Chris Angelico
On Wed, Feb 12, 2014 at 1:24 AM, Roy Smith r...@panix.com wrote:
 Whether I mind shipping my source, or you mind shipping your source
 isn't really what matters here.  What matters is that there *are*
 people/companies who don't want to expose their source.  Perhaps for
 reasons we don't agree with.  For those people, Python is not a good
 choice.

But if it comes to that, there's really nothing that's all that great
a choice. After all, a small amount of introspection will identify the
external references in something (even C code has that, unless every
single call is statically linked; and even then, I've used gdb
usefully on other people's optimized binaries), so while someone might
not be able to figure out how your code works, they can at least
figure out what it's doing, and call on it directly. The only
difference between a .pyc file and a binary executable is that the pyc
bytecode is written for a virtual machine rather than a physical CPU.

It's not a matter of this is good, that is bad, but a spectrum of
difficulties - optimized C code with everything statically linked is
about as close to one extreme as you'll get without consciously
obfuscating your code, and well-commented source is the opposite
extreme. A minified source file, a .pyc file, or a dynamically linked
.so, all are just someplace along that range. It's just a question of
how much time and effort it takes to figure out the internals of the
code.

Considering that there are big companies spending lots of money
devising DRM schemes, and their code often gets decompiled or reverse
engineered within a day of release, I'd have to say that even
obfuscated code is no real barrier. The *only* way to expose nothing
is to publish nothing - which, these days, usually means running your
software on a server and distributing a fairly dumb client... a model
that MUDs have been using to great effect for decades, and are even
today able to be run commercially.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Anssi Saari
Asaf Las roeg...@gmail.com writes:

 btw, Python could be language of choice for embedded systems if small 
 footprint 
 vm could be developed. had seen similar for java having 10-20 KB byte sized 
 interpreter with very limited set of functions.

Well, there's the newish Micro python project. Its footprint is
apparently about 60 kB at a minimum (Thumb2 code on ARM). Their
kickstarter is at
https://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers
and source at https://github.com/micropython/micropython

The kickstarter was for funding development and a small board with ST's
Cortex-M4 on it. The source code includes Windows and Unix targets so
it's easy to experiment with without a board too.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Grant Edwards
On 2014-02-09, Chris Angelico ros...@gmail.com wrote:

 Heavy computation might be unideal in Python, but if you can grunge
 it into NumPy operations, that won't be a problem.

While one might thing Python is not suitable for heavy number
crunching, it actually gets used for that a lot due to the wide
variety of hard-core number-crunching libraries[1] available (BLAS,
LINPACK, LAPACK, and the sort of thing usually associated with boffins
writin FORTRAN programs).  If you're interestedin that sort of stuff,
check out Scientific Python, SciPy, et al.

 http://www.scipy.org/
 http://en.wikipedia.org/wiki/ScientificPython/
 https://wiki.python.org/moin/NumericAndScientific
 
For extra geek-points you run them on the Fermilab/CERN Scientific
Linux distro:

 https://www.scientificlinux.org/

You can also get a Python distribution with all the extra geekyness
already baked in:

 https://www.enthought.com/products/epd/

[1] Some of those libraries are in FORTRAN because I guess there are
some sorts of numerical hocus-pocus that still writes easier and
runs faster in FORTRAN than in C.

-- 
Grant Edwards   grant.b.edwardsYow! I'm ZIPPY the PINHEAD
  at   and I'm totally committed
  gmail.comto the festive mode.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Steven D'Aprano
On Sun, 09 Feb 2014 06:17:03 +0100, Skybuck Flying wrote:

 
 I got to know about Python a few months ago and today, I want to develop
 only using Python because of its code readability. This is not a healthy
 bias. To play my own devil's advocate, I have a question. What are the
 kinds of software that are not advisable to be developed using Python? 
 
 Anything that needs to be super reliable.

Obvious troll is obvious.

Okay, I'll bite. What evidence do you have that programs written in 
Python are more bug-ridden or less reliable than programs written in 
other languages? Your own poorly written, buggy software doesn't count as 
evidence. Hypothetical arguments based on it stands to reason or 
everybody knows that static-typed compilers catch more bugs don't count 
either. Let's see some hard, reliable statistics.


 My experience so far with Python versus Delphi has shown that Python
 requires way more time to debug than Delphi.

I'm sorry to hear that you aren't yet fluent at reading, writing and 
debugging Python code. While it's true that somebody can write hard-to-
debug code in any language, in general Python's ease of us, dynamic but 
not too dynamic nature, and powerful introspection makes debugging quite 
easy.


 The reason for this is the interpreter versus the compiler.

Which interpreter is that? Do you understand that Python has a compiler? 
There's even a compile built-in function which compiles source code at 
runtime, ready to run it whenever you like.


 Delphi's compiler will catch many bugs in branches that have not been
 executed or tested.

Only if you write many bugs. You can't catch bugs that aren't there *wink*

But seriously, Delphi's compiler will catch a tiny subset of all possible 
bugs, namely, those which can be recognised by static type-checking. 
While that's useful, it doesn't happen for free. The cost is that Delphi, 
like Pascal, is a lot less flexible, and a lot more tightly constrained 
by the need to keep the compiler happy. Although Delphi does have type 
inference, it is apparently quite limited, which means you're writing a 
lot more boilerplate code declaring types compared to Python.


 While Python's interpreter will mostly catch bugs in executed and tested
 branches.
 
 Most of the code that has not been executed yet could contain bugs and
 even syntax/typos/non declared variables and so forth.

Deary deary me, you've just exposed yourself as somebody who doesn't 
actually know much about Python. Non-declared variables? Python doesn't 
require declarations for variables.

Nor can syntax errors hide in code branches that haven't been run. (Well, 
technically they could, if you use eval or exec.) But for normal code, it 
is checked for syntax errors during the compilation phase, all at once.


 Which means that the entire Python program will have to be re-executed
 from the start to ultimately end up in branches that were not executed
 the last time.

That's certainly true. But the same applies to Delphi. Type errors and 
syntax errors are only a tiny subset of all the possible errors. You can 
have off-by-one errors, logic errors, out-of-bounds errors, network 
errors, database errors, file system errors... Delphi can't check for 
those at compile time. No matter how clever the programmer or the 
compiler, code that hasn't been run and tested cannot be trusted to be 
correct. As Donald Knuth said:

Beware of bugs in the above code; I have only proved it 
correct, not tried it.


 This way of debugging will require many many many many many many many
 many runs of the same Python program before it's somewhat debugged.

And if your Delphi code doesn't have just as many many many many many 
many many many runs, it won't be debugged either.


 This is time lost in the debugging phase.
 
 Having said that... time is gained in the programming phase thanks to
 it's shortened syntax.
 
 However there is more... Python may lack some technical language
 elements like, call by reference, and perhaps other low level codes,
 like 8 bit, 16 bit, 32 bit integers which play a roll with interfacing
 with hardware.

Call by reference is a means to an end, not an end to itself. Apart from 
that, all those things you say Python may lack, it actually has.


 Types of software which would not go onto my python list: operating
 systems, drivers, perhaps also virtual machines and even compilers,
 python slow execution speed hampers that as well.

Agree with the first three. Not so much the last one. Perhaps you have 
heard of PyPy? It's not just an optimizing Python compiler, but a more 
general compiler-building tool.



-- 
Steven
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread CM
On Saturday, February 8, 2014 10:43:47 PM UTC-5, Steven D'Aprano wrote:

 PyPy can generate code which is comparable to compiled C in speed.  
 Perhaps you mean, if execution speed is the most important thing, using 
 a naive Python interpreter may not be fast enough.

Given that the OP seems to be new enough to Python to not know what it is
not as good for, my guess is that PyPy may not yet be ready enough to
serve some/most of his needs. For example, if he wanted to write a GUI
app, AFAIK he is, for now, limited to Tkinter and a constrained section of
wxPython, and wxPython is dicey.  I tend to see things through a desktop GUI 
application lens, so maybe this is just my bias.  And I hope I am wrong. I 
am in no way trying to slight the PyPy efforts.

Maybe he could somehow write the GUI part with CPython and the speed-critical
parts with PyPy but I don't know if that is possible.  (Is it?)
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Tim Daneliuk

On 02/08/2014 05:54 PM, Sam wrote:

I got to know about Python a few months ago and today, I want to develop only 
using Python because of its code readability. This is not a healthy bias. To 
play my own devil's advocate, I have a question. What are the kinds of software 
that are not advisable to be developed using Python?



Anything requiring strict time determinism - interrupt handlers, hard realtime, 
etc.

Embedded software (stuff going into ROM).

Virtual memory managers or any other core part of a OS that manipulates 
hardware.
It can be done with a minimal lower language shim to the hardware, but it likely
would be slow.

Life-critical (life support, weapons control, etc.) unless you're willing to
strictly avoid the runtime dynamism of the language.  When life and limb are
at stake you want a very static language with strong type enforcement
and lots of assertion checks.  In principle, you can certainly do this
in Python, but the language naturally encourages dynamic typing, introspection,
and other, similar runtime behaviors.

Applications where storage for programs is at a premium such as Atmel and
PIC microcontrollers with onboard flash.

Applications in which you do not want the casual reader to be able to
derive the meaning of the source code.





--

Tim Daneliuk tun...@tundraware.com
PGP Key: http://www.tundraware.com/PGP/

--
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Chris Angelico
On Tue, Feb 11, 2014 at 3:21 PM, CM cmpyt...@gmail.com wrote:
 On Saturday, February 8, 2014 10:43:47 PM UTC-5, Steven D'Aprano wrote:

 PyPy can generate code which is comparable to compiled C in speed.
 Perhaps you mean, if execution speed is the most important thing, using
 a naive Python interpreter may not be fast enough.

 Given that the OP seems to be new enough to Python to not know what it is
 not as good for, my guess is that PyPy may not yet be ready enough to
 serve some/most of his needs. For example, if he wanted to write a GUI
 app, AFAIK he is, for now, limited to Tkinter and a constrained section of
 wxPython, and wxPython is dicey.  I tend to see things through a desktop GUI
 application lens, so maybe this is just my bias.  And I hope I am wrong. I
 am in no way trying to slight the PyPy efforts.

 Maybe he could somehow write the GUI part with CPython and the speed-critical
 parts with PyPy but I don't know if that is possible.  (Is it?)

More likely, he can write the whole thing in Python, and then run it
in CPython. Then see if its speed is good enough. Sometimes good
enough means finishes executing in less than 100ms after user
interaction. Sometimes it's even more generous. Other times it's can
handle at least X requests per second on a single CPU core, where X
is defined based on the number of requests that the network can
handle. If it meets that requirement, there's no reason to go to any
sort of effort to improve performance. And that's how it is for huge
HUGE numbers of Python scripts.

Of course, if performance _is_ a problem, then the next step is to
measure and find out exactly what's the slow bit. It's seldom what you
first think of.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Steven D'Aprano
On Mon, 10 Feb 2014 22:40:48 -0600, Tim Daneliuk wrote:

 On 02/08/2014 05:54 PM, Sam wrote:
 I got to know about Python a few months ago and today, I want to
 develop only using Python because of its code readability. This is not
 a healthy bias. To play my own devil's advocate, I have a question.
 What are the kinds of software that are not advisable to be developed
 using Python?

[snip a bunch of good examples]

 Applications in which you do not want the casual reader to be able to
 derive the meaning of the source code.

That's a bad example. Do you think that the casual reader will be able to 
understand the meaning of .pyc files?


-- 
Steven
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-10 Thread Tim Daneliuk

On 02/10/2014 11:35 PM, Steven D'Aprano wrote:

On Mon, 10 Feb 2014 22:40:48 -0600, Tim Daneliuk wrote:


On 02/08/2014 05:54 PM, Sam wrote:

I got to know about Python a few months ago and today, I want to
develop only using Python because of its code readability. This is not
a healthy bias. To play my own devil's advocate, I have a question.
What are the kinds of software that are not advisable to be developed
using Python?


[snip a bunch of good examples]


Applications in which you do not want the casual reader to be able to
derive the meaning of the source code.


That's a bad example. Do you think that the casual reader will be able to
understand the meaning of .pyc files?





Point taken :)

--

Tim Daneliuk tun...@tundraware.com
PGP Key: http://www.tundraware.com/PGP/

--
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-09 Thread wxjmfauth
Le dimanche 9 février 2014 06:17:03 UTC+1, Skybuck Flying a écrit :
 
 
 
 
 
 However there is more... Python may lack some technical language elements 
 
 like, call by reference, and perhaps other low level codes, like 8 bit, 16 
 
 bit, 32 bit integers which play a roll with interfacing with hardware.
 
 
 

Or, pure software, interfacing with the unicode transformation units!

jmf
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-09 Thread Mark Lawrence

On 09/02/2014 10:47, wxjmfa...@gmail.com wrote:

Le dimanche 9 février 2014 06:17:03 UTC+1, Skybuck Flying a écrit :






However there is more... Python may lack some technical language elements

like, call by reference, and perhaps other low level codes, like 8 bit, 16

bit, 32 bit integers which play a roll with interfacing with hardware.





Or, pure software, interfacing with the unicode transformation units!

jmf



You missed this :)

--
My fellow Pythonistas, ask not what our language can do for you, ask 
what you can do for our language.


Mark Lawrence

---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com


--
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Denis McMahon
On Sat, 08 Feb 2014 15:54:30 -0800, Sam wrote:

 I got to know about Python a few months ago and today, I want to develop
 only using Python because of its code readability. This is not a healthy
 bias. To play my own devil's advocate, I have a question. What are the
 kinds of software that are not advisable to be developed using Python?

OS Kernels. Hardware drivers.

-- 
Denis McMahon, denismfmcma...@gmail.com
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Chris Angelico
On Sun, Feb 9, 2014 at 10:54 AM, Sam lightai...@gmail.com wrote:
 I got to know about Python a few months ago and today, I want to develop only 
 using Python because of its code readability. This is not a healthy bias. To 
 play my own devil's advocate, I have a question. What are the kinds of 
 software that are not advisable to be developed using Python?


Device drivers and operating systems. Definitely don't try writing
those in pure Python.

Anything that provides a C API is usually easier to program in C, so
you would want to write a Python-callable glue module. Sometimes
you'll find that there's nothing else to do but the module, in which
case you've pretty much written your app in C, but often you can write
a tiny driver script that calls on your functions - which means you
can, later on, write a GUI app that calls on the same functions. But
using ctypes for that is pretty messy and tedious. (Note that you
might be able to write your glue module using Cython. I've never done
this, but that's a sort of half-way mark between Python and C, with
most of the code feeling like Python but the facilities being like C.
Some day, I must try it.)

Projects that are already partly written in some other language, or
which should be written to use libraries in another language, usually
should be written in that language. Modifying your PHPBB forum should
probably be done in PHP, no matter what you think of that language
(and who doesn't).

Web applications that need to run on cheap web hosts usually need to
be written in PHP, too, but Python is available on a good few
not-so-cheap hosts, so that might not be a problem.

Heavy computation might be unideal in Python, but if you can grunge it
into NumPy operations, that won't be a problem.

For the rest, Python's probably a fine language. Applications,
servers, pretty much anything will work. Have at it!

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Roy Smith
In article a584b0e9-1995-4189-bfac-d0c5ffc08...@googlegroups.com,
 Sam lightai...@gmail.com wrote:

 I got to know about Python a few months ago and today, I want to develop only 
 using Python because of its code readability. This is not a healthy bias. To 
 play my own devil's advocate, I have a question. What are the kinds of 
 software that are not advisable to be developed using Python?

If execution speed is the most important thing, Python would be the 
wrong choice.

If you need to get very close to the hardware (such as when writing an 
operating system), Python would be the wrong choice.

If you are writing software for an environment which has a 
single-language ecosystem (i.e. iOS - Objective C, or Android - Java), 
Python would be the wrong choice.

If, for security/business reasons, shipping only the executable, without 
the end user having access to your original source, Python would be the 
wrong language.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Steven D'Aprano
On Sat, 08 Feb 2014 21:53:00 -0500, Roy Smith wrote:

 In article a584b0e9-1995-4189-bfac-d0c5ffc08...@googlegroups.com,
  Sam lightai...@gmail.com wrote:
 
 I got to know about Python a few months ago and today, I want to
 develop only using Python because of its code readability. This is not
 a healthy bias. To play my own devil's advocate, I have a question.
 What are the kinds of software that are not advisable to be developed
 using Python?
 
 If execution speed is the most important thing, Python would be the
 wrong choice.

PyPy can generate code which is comparable to compiled C in speed. 
Perhaps you mean, if execution speed is the most important thing, using 
a naive Python interpreter may not be fast enough.


 If you need to get very close to the hardware (such as when writing an
 operating system), Python would be the wrong choice.
 
 If you are writing software for an environment which has a
 single-language ecosystem (i.e. iOS - Objective C, or Android - Java),
 Python would be the wrong choice.

https://github.com/kivy/python-for-android
https://ep2013.europython.eu/conference/talks/developing-android-apps-completely-in-python
https://python-for-android.readthedocs.org/en/latest/
http://qpython.com/


 If, for security/business reasons, shipping only the executable, without
 the end user having access to your original source, Python would be the
 wrong language.

Security by obscurity.

Nevertheless, although security by obscurity is ineffective[1], Python 
supports it. You can ship only the .pyc files. For added obscurity, you 
could put the .pyc files in a .zip file and ship that. For even more 
obscurity, you could write a custom importer, and then ship your python 
byte-code hidden in a mp3 or TIFF file.




[1] Shipping only compiled executables hasn't made Windows any more 
secure, prevented viruses and malware from taking advantage of zero-day 
exploits, or prevented software piracy.

-- 
Steven
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Michael Torrie
On 02/08/2014 05:11 PM, Chris Angelico wrote:
 On Sun, Feb 9, 2014 at 10:54 AM, Sam lightai...@gmail.com wrote:
 I got to know about Python a few months ago and today, I want to develop 
 only using Python because of its code readability. This is not a healthy 
 bias. To play my own devil's advocate, I have a question. What are the kinds 
 of software that are not advisable to be developed using Python?

 
 Device drivers and operating systems. Definitely don't try writing
 those in pure Python.

That all depends. Driving a USB device using libusb and Python might
just be the ticket to get things up and running quickly.  At one time
someone wrote a Linux kernel module that allowed you to use Perl to
implement some kinds of driver things.

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Asaf Las
On Sunday, February 9, 2014 5:43:47 AM UTC+2, Steven D'Aprano wrote:
 Nevertheless, although security by obscurity is ineffective[1], Python 
 supports it. You can ship only the .pyc files. For added obscurity, you 
 could put the .pyc files in a .zip file and ship that. For even more 
 obscurity, you could write a custom importer, and then ship your python 
 byte-code hidden in a mp3 or TIFF file.

There are some code obfuscator for python but i never used them. 

btw, Python could be language of choice for embedded systems if small footprint 
vm could be developed. had seen similar for java having 10-20 KB byte sized 
interpreter with very limited set of functions.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Chris Angelico
On Sun, Feb 9, 2014 at 3:08 PM, Michael Torrie torr...@gmail.com wrote:
 On 02/08/2014 05:11 PM, Chris Angelico wrote:
 On Sun, Feb 9, 2014 at 10:54 AM, Sam lightai...@gmail.com wrote:
 I got to know about Python a few months ago and today, I want to develop 
 only using Python because of its code readability. This is not a healthy 
 bias. To play my own devil's advocate, I have a question. What are the 
 kinds of software that are not advisable to be developed using Python?


 Device drivers and operating systems. Definitely don't try writing
 those in pure Python.

 That all depends. Driving a USB device using libusb and Python might
 just be the ticket to get things up and running quickly.  At one time
 someone wrote a Linux kernel module that allowed you to use Perl to
 implement some kinds of driver things.

That's not the same; libusb is doing the low-level handling for you.
That's not the sense of device driver that gets really close to the
metal. I'm talking about real-time response to signals, I/O port and
interrupt handling, that kind of thing. The device driver will then
expose a higher-level API, maybe as a /dev/something openable, and
Python can control the device using that.

And that's something that Python *is* good at. I wouldn't use Python
to write a device driver for an RTL8169 card, but if I have that card
in my computer, I will totally use Python to create a network
connection and transfer data. I'm just not going to concern myself
with the low-level details when I do. :)

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Skybuck Flying


I got to know about Python a few months ago and today, I want to develop 
only using Python because of its code readability. This is not a healthy 
bias. To play my own devil's advocate, I have a question. What are the kinds 
of software that are not advisable to be developed using Python?



Anything that needs to be super reliable.

My experience so far with Python versus Delphi has shown that Python 
requires way more time to debug than Delphi.


The reason for this is the interpreter versus the compiler.

Delphi's compiler will catch many bugs in branches that have not been 
executed or tested.


While Python's interpreter will mostly catch bugs in executed and tested 
branches.


Most of the code that has not been executed yet could contain bugs and even 
syntax/typos/non declared variables and so forth.


Which means that the entire Python program will have to be re-executed from 
the start to ultimately end up in branches that were not executed the last 
time.


This way of debugging will require many many many many many many many many 
runs of the same Python program before it's somewhat debugged.


This is time lost in the debugging phase.

Having said that... time is gained in the programming phase thanks to it's 
shortened syntax.


However there is more... Python may lack some technical language elements 
like, call by reference, and perhaps other low level codes, like 8 bit, 16 
bit, 32 bit integers which play a roll with interfacing with hardware.


Types of software which would not go onto my python list: operating systems, 
drivers, perhaps also virtual machines and even compilers, python slow 
execution speed hampers that as well.


Bye,
 Skybuck. 


--
https://mail.python.org/mailman/listinfo/python-list


Re: What are the kinds of software that are not advisable to be developed using Python?

2014-02-08 Thread Chris Angelico
On Sun, Feb 9, 2014 at 4:17 PM, Skybuck Flying
windows7i...@dreampc2006.com wrote:
 Anything that needs to be super reliable.

 My experience so far with Python versus Delphi has shown that Python
 requires way more time to debug than Delphi.

 The reason for this is the interpreter versus the compiler.

 Delphi's compiler will catch many bugs in branches that have not been
 executed or tested.

 While Python's interpreter will mostly catch bugs in executed and tested
 branches.

What this means is that Python forces you to have a good test suite.
Yes, that is a cost; but it's nothing to do with compiled vs
interpreted. These days, language engines aren't strictly one or the
other, they're on a scale. Python will catch syntactic errors at
compile time, but will catch most other forms of error at run time...
except for the ones that, regardless of the language used, simply
result in wrong data. So if you're not testing your code, you can't
rely on it, and that's nothing to do with the language.

A language with typed variable declarations can catch at compile-time
a class of error that Python can't catch until run-time. Yep. But that
doesn't actually answer the question: what should Python not be used
for. If you need to trust your code, you need to test it.

 However there is more... Python may lack some technical language elements
 like, call by reference, and perhaps other low level codes, like 8 bit, 16
 bit, 32 bit integers which play a roll with interfacing with hardware.

I've never yet found a desperate need for call-by-reference. In toy
examples, the equivalent functionality can be achieved by treating a
one-element list as a pointer, and dereferencing it just like you
would in C, with [0] at the end. Never needed it in production code,
though. But again, this doesn't cut out a class of application, just a
style of coding.

As to strict-size integers, Python does have a struct module, and
ctypes, both of which are designed for interfacing with hardware or
low-level APIs. For normal work, you don't need to care about that at
all.

 Types of software which would not go onto my python list: operating systems,
 drivers, perhaps also virtual machines and even compilers, python slow
 execution speed hampers that as well.

A virtual machine where machine code is executed in Python? Well,
depends on how fast you need it to be, but yes, that's quite likely to
demand more oomph than your typical Python interpreter can give you.
Although you could probably play ancient 8088 games, actually
interpreting it all on the fly; on modern hardware, you could probably
get up to the speed of those old CPUs. Of course, if you can get most
of the work done at a lower level, then it's not that kind of VM, and
performance is completely different.

Compilers... yes, on big projects, you'd probably want to write the
compiler in C. I generally say that C is for writing operating systems
and high level languages, and those high level languages are for
writing everything else in. But look at PyPy. It's possible to write a
Python compiler in Python, which can often out-perform CPython. So
it's not so clear-cut :)

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list