create account

Python 이 Java 보다 좋은 이유 2 by kdj

View this thread on: hive.blogpeakd.comecency.com
· @kdj ·
$17.99
Python 이 Java 보다 좋은 이유 2
파이선은 인터프리터
사실 이것이 가장 강점인데... (최근의 언어들은 인터프리터 환경을 지원하며 아주 좋습니다)
\>>> : 이것이 인터프리터 프롬프트입니다.
여기에 한줄씩 입력하면 바로바로 결과가 튀어나옵니다.

~~~~
>>> 1 + 1
2
~~~~

이런 것도 가능합니다.

~~~~
>>> list = [ 1,2,3,4,5]
>>> [ x * 2 for x in list ]
[2, 4, 6, 8, 10]
>>> for i in _:
...     print(i)
... 
2
4
6
8
10
~~~~
<br>
에디터를 켜지 마세요 인터프리터에 양보하세요.

컴퓨터 언어를 배우기 가장 좋은 환경은 인터프리터입니다.
인터프리터란 컴퓨터와 대화하는 것으로 파이선 인터프리터에서는 키보드 몇번 뚜들기면 "아하" 가 연발합니다.
혹 어렸을 때 BASIC 을 배운적이 있다면 BASIC 이 인터프리터라는 사실을 기억할 것입니다.

파이선을 스크립트 언어라고도 합니다.
Shell 스크립트 대신에 쓸 수 있는데 Perl, Python 등의 언어로 스크립트를 만들 수 있습니다.
장고를 사용한 파이선 스크립트 작성 예입니다.
https://steemit.com/programming/@agile/python-script-django

참고로 MS 윈도우 계열에서는 DOS 시절 제공되는 Batch 파일과 cscript 등의 스크립트를 지원합니다.
맥에서도 AppleScript 라는 것을 지원하며, Batch 작업(일괄작업)을 도와줍니다.
맥도 유닉스 계열이므로 shell 스크립트를 지원하며 윈도우10부터는 bash 을 설치하여 유닉스 shell 스크립트를 쓸 수 있습니다.

shell 스크립트의 예입니다. https://www.macs.hw.ac.uk/~hwloidl/Courses/LinuxIntro/x945.html
저의 경우에는 잘 쓰지 않다 보니 문법도 생소합니다. 읽을 수는 있으나 작성할 수 없는 수준입니다.

~~~~
#!/bin/bash
if [ $# -lt 1 ]
then
  echo "Usage: $0 file ..."
  exit 1
fi

echo "$0 counts the lines of code"
l=0
n=0
s=0
for f in $*
do
	l=`wc -l $f | sed 's/^\([0-9]*\).*$/\1/'`
	echo "$f: $l"
        n=$[ $n + 1 ]
        s=$[ $s + $l ]
done
echo "$n files in total, with $s lines in total"
~~~~
<br>
설명을 붙이자면 위 파일을 cl.sh 로 저장하고
$ chmod +x cl.sh
$ ./cl.sh file1 file2
를 수행하면 아래와 같은 출력이 나옵니다.

./cl.sh counts the lines of code
file1: 206
file2: 56
2 files in total, with 262 lines in total

넘 어렵네요.... Perl 로 바꿔 보겠습니다.

~~~~
#!/usr/bin/perl
use strict;

sub trim($) {
    my $string = shift;
    $string =~ s/^\s+//;
    $string =~ s/\s+$//;
    return $string;
}

if ( @ARGV < 1 ) {
    printf "Usage: $0 file ...\n";
    exit(1);
}

printf "$0 counts the lines of code\n";
my $fc = 0;
my $tot = 0;
foreach my $f (@ARGV) {
   my $l = `wc -l $f`;
   my @w = split ' ', trim($l), 2;
   printf "$w[1]: $w[0]\n";
   $fc++;
   $tot += $w[0];
}
print "$fc files in total, with $tot lines in total\n"
~~~~
<br>
함수도 보이고, 익숙한 printf 도 보이고, 하지만 변수명이 $@ 암호와 같습니다.
가독성면에서 shell 스크립트 보다는 나아진것 같기도 하고 아닌 것 같기도 하고...
저도 한때 Perl 을 좀 썼었는데, 지금은 전혀 기억이 나지 않는군요.
위 코드 짜는데 언 30분 이상 소모 되었습니다. (생산성 BAD)

이제 Python 으로

~~~~
#!/usr/bin/python

import sys

def line_count(_file):
    return sum(1 for l in open(_file))

if len(sys.argv) < 2:
    print "Usage: {} file ...".format(sys.argv[0])
    exit(1)

print "{} counts the lines of code".format(sys.argv[0])

fc = 0
tot = 0
for i, _file in enumerate(sys.argv):
    if i > 0:
        lc = line_count(_file)
        print "{}: {}".format(_file, lc)
        fc += 1
        tot += lc
print "{} files in total, with {} lines in total".format(fc, tot)
~~~~
<br>
훨씬 더 읽기 좋습니다. 암호와 같은 $%# 가 사라졌습니다.

#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl

스크립트 파일은 텍스트 파일이므로 첫 줄에 어떤 스크립트 툴이 라를 실행시킬건지 첫줄에 적습니다.

Seven Languages in Seven Weeks 라는 책이 있습니다.
한가지 언어만 배우는 것보다 여러가지를 섞어 배우면 더 해깔리고 더 맨붕이 오는 즐거움이 옵니다.
👍  , , , , , , , , , , , , , , , , ,
properties (23)
authorkdj
permlinkpython-java-2
categorykr-dev
json_metadata{"tags":["kr-dev","kr","python"],"links":["https://steemit.com/programming/@agile/python-script-django","https://www.macs.hw.ac.uk/~hwloidl/Courses/LinuxIntro/x945.html"],"app":"steemit/0.1","format":"markdown"}
created2017-06-26 10:44:00
last_update2017-06-26 10:44:00
depth0
children3
last_payout2017-07-03 10:44:00
cashout_time1969-12-31 23:59:59
total_payout_value16.600 HBD
curator_payout_value1.386 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,894
author_reputation4,188,781,313,300
root_title"Python 이 Java 보다 좋은 이유 2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id6,161,819
net_rshares1,854,182,039,945
author_curate_reward""
vote details (18)
@darkerhorse ·
if you could give your post an english translation am sure i will learn a lot.
properties (22)
authordarkerhorse
permlinkre-kdj-python-java-2-20170626t104933069z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2017-06-26 10:49:48
last_update2017-06-26 10:49:48
depth1
children1
last_payout2017-07-03 10:49:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length78
author_reputation1,376,329,664,978
root_title"Python 이 Java 보다 좋은 이유 2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id6,162,331
net_rshares0
@kdj ·
Why don't you use Google translator?
properties (22)
authorkdj
permlinkre-darkerhorse-re-kdj-python-java-2-20170626t130750307z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2017-06-26 13:07:54
last_update2017-06-26 13:07:54
depth2
children0
last_payout2017-07-03 13:07:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length36
author_reputation4,188,781,313,300
root_title"Python 이 Java 보다 좋은 이유 2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id6,176,436
net_rshares0
@deathnote9 ·
확실히 파이썬이 자바보다 코드양이 적고 간편하게 나와있는거 같습니다. 근데 자바를 자주 사용하다보니 지금은 자바가 좀더 편한거 같습니다
properties (22)
authordeathnote9
permlinkre-kdj-python-java-2-20170628t024513728z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2017-06-28 02:45:18
last_update2017-06-28 02:45:18
depth1
children0
last_payout2017-07-05 02:45:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length75
author_reputation94,070,047,675
root_title"Python 이 Java 보다 좋은 이유 2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id6,420,940
net_rshares0