pythonx

hedgebornabaloneΛογισμικό & κατασκευή λογ/κού

2 Δεκ 2013 (πριν από 3 χρόνια και 6 μήνες)

72 εμφανίσεις

Team Avengers

HISTORY


1991


Guido van
Rossum


Centrum
Wiskunde

&
Informatica


ABC &
Amoeba




Influences


ABC, C, Algol
-
68 &
Icon


Modula
-
2+ &
Modula
-
3


Changes



-
Garbage collector & UNIX



-
OSS



-
CPython

and others


“Programming
Languange

of the Year”



-
TIOBE, 2007 and 2010



-
PyCon

DESIGN
&
RATIONALE

Rationale


ABC


Didn’t have enough features


Impossible to improve language


Amoeba


simpler
way to develop system
administration
programs


C program
&
Bourne shell script
took too
long


From there, he attempted to create a
similar
language not
so similar to ABC with the
Amoeba system calls.





Rossum

wanted results as quickly as possible


Made
the philosophy
of taking shortcuts


Borrowed ideas from other languages


ABC


Amoeba.


C

Design


Similar to C:


Same keywords.


Operators.



Different to C:


No semi
-
colons


No braces



C:


if (a < b) {

max = b;

} else {

max = a;

}



Python:


if a < b:

max = b

else:

max = a


Exceptions


Errors found while a program is executed,
are


Used for error handling.


Exceptions handlers


try


except


finally


Handlers made to take care of exceptions


All objects are “FIRST CLASS


A
bility to assign any object to anything


Variable


P
laced on lists


Passed as an argument.


Easy because objects based on a C data
structure


Drops compile
-
time type checking


All type checking during run
-
time
.


Hash table
implementation
replaced sorted
tables


Felt it would be
faster & easier than
ABC’s B
-
tree.




Every statement is
executable


Made Python
simpler & easier to
write by allow
nesting functions

class
some_class
(
parent_class
):





def

doOp
(self, x, y):









def

add(x, y):













return x + y









return add(x, y)


FEATURES &
PHILOSOPHY

Features


Powerful multi
-
paradigm high level language


Object oriented


Imperative


Automatic memory management


Large
standard library
of resources


100+ modules and growing


Includes third
-
party modules


Implemented other languages’ libraries
such as C & ABC


Great for novice programmers

Python 1.0


Dynamic type


Exception handling


Programming Tools


Lambda


Filter


Reduce


Short learning curve


Asserted statements



Built in support for importing hierarchical
module names


Comparison able to raise exceptions


New dictionary methods



Clear()


Copy()


Update()


Easy for Python to be embedded


Compatible with GNU General Public License


Python 2.0


Garbage collector


Unicode


List comprehensions


Introduced string methods


Unification


Generators



Requested
Augmented Assignment


y= y + 2
becomes

y+= 2


Compiler work more efficiently


More transparent & community
-
backed

Python 3.0(Python 3000/Py3k)


Removed redundant constructs & modules


Replaced print statement as function


Customization of separator between items


Views & iterators replaces lists


Rules of ordering comparisons were
simplified and use of integers


Ex


int

replaced


long



Text and binary data


Philosophy


Fun & user
-

friendly


Versatile


Presentation and aesthetic syntax


Clear and highly readable


Widely spaced and organized


Indentation as block delimiters


Concise & simple


“There should be one
-
and preferably only
one
-
obvious way to do it”




Freedom to use different style


Object
-
oriented


Structured


Functional


Aspect
-
oriented


Highly extensible


Freedom write modules in C or C++


Great glue language





PROS & CONS



Free, open
-
source unlike
some other languages.


Easy to understand and
program.


Simple structure marked
with easy to recognize
symbols.


Primarily a scripting
language very suitable for
internet applications.




PROS


Python supports multiple programming
paradigms, primarily, but not limited to,
object
-
oriented, imperative, and to a lesser
extent, functional programming styles.


Python is also dynamic, consisting of garbage
collection.


Easy integration with C++ and Java which
allows the programmer a wider scope and
ways to solve a particular problem.



Interfaces, or connections with many function
calls, libraries &many Windows based systems
as well.



Zope



widely used & easily understood
content management tool, primarily used
today in Europe. Enables programmers to
easily design websites that can be modified by
owners without the programmer interaction.


Jython

-

very appealing program to
programmers particularly savvy with Java.
Completely written in Java with easy access to
Java libraries, faster development & testing of
applications.

Cons


When scripting with Python there is one and
only one way to solve a problem, but with its
competitor Ruby there are more than one way
to solve a problem.


Database access layers are also very
primitive compared to other established
technology like OBDC.


Very few tools enabling multiple user
programming.




Python also lacks a fully functional
Integrated Development Environment (IDE)
which also makes it a horrible candidate for
creating Graphical User Interfaces and
multitasking.


Requires much more extensive testing.


Strange documentation


Lack of end statements

APPLICATIONS

Forecastwatch


Used in all of
components.


Standard Python
Libraries


Collecting


Parsing


Storing


Minimized PHP URL’s



Most Useful Libraries


Thread


Normal Expression


Object Serialization


Gzip

Data Compression


Threading library for scaling
the coverage to over 800
cities.

Facebook


Uses MySQL
backbone


Multiple large data
libraries useful for
data on Facebook.


Python based
program, Tornado,
as part of its data
infrastructure.


Civilization IV


Python for most tasks


boost.python

allows
access parts of game


Style


Content of the
interface screens


Modify random map
generation & add
complex scripted
events.

Youtube


“Produce maintainable
features in record times,
with a minimum of
developers.”


Quick development
times


Great for writing larger
programs



Great object
-
oriented
features.

Google


Google Groups,
Gmail, Google maps
& search engine
internals.


Large data libraries
& ease of
programmability.


Easily readable
language