Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Thursday, June 16, 2011

PDB - Python Debugger - How to use?

As a programmer, one of the first things that you need for serious program development is a debugger.
Python has a debugger, which is available as a module called pdb (for “Python DeBugger”, naturally!). Unfortunately, most discussions of pdb are not very useful to a Python newbie — most are very terse and simply rehash the description of pdb in the Python library reference manual. The discussion that I have found most accessible is in the first four pages of Chapter 27 of the Python 2.1 Bible.
So here is my own personal gentle introduction to using pdb. It assumes that you are not using any IDE — that you’re coding Python with a text editor and running your Python programs from the command line.

Some Other Debugger Resources

Python là gì?

Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

Theo đánh giá của Eric S. Raymond, Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu, như nhận định của chính Guido van Rossum trong một bài phỏng vấn ông[1].

Ban đầu, Python được phát triển

Wednesday, May 4, 2011

Từ khóa Static trong C++.

Từ khóa Static trong C++.
Keyword Static in C++.

Từ khóa Static là một trong những từ khóa được sử dụng phổ biến trong ngôn ngữ lập trình C++. Static được coi là một Specifier trong một biểu thức khai báo.
Xét trong một class, một static data member sẽ gắn liền với một class thay vì gắn liền với các object của class. Mỗi object của class sẽ điều khiển các thành phần non-static của riêng mình, trong khi đó tất cả sẽ cùng dùng chung static data member.
Lấy ví dụ sau:
  1. class Thing {
  2. public:
  3. Thing(int a, int b);
  4. ~Thing(); 
  5. void display() const ;
  6. static void showCount();
  7. private:
  8. int m_First, m_Second;
  9. static int sm_Count;
    };

Trong file implement của class Thing:
#include "static.h"
#include
int Thing::sm_Count = 0;

Thing::Thing(int a, int b)
: m_First(a), m_Second(b) {
++sm_Count;
}
 
Thing::~Thing() {
--sm_Count;
}
 
void Thing::display() const { 
using namespace std;
cout << m_First << "$$" << m_Second;
}

void Thing::showCount() {
using namespace std;
cout << "Count = " << sm_Count << endl;
}
Trong ví dụ trên ta thấy một số vấn đề sau:
1. Khai báo Static phải và chỉ được khai báo trong class declaration (header file)
2. Khởi tạo của Static member class phải được khởi tạo ngoài class declaration.