Stack vs Heap

http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html

Garis bawah
Stack di-manage secara efisien oleh CPU, oleh karena-nya memory tidak akan terfragmentasi (bolong-bolong gitu).
Tidak ada garansi pengunaan space secara efisian jika menggunakan heap, karena sejalan dengan waktu (over time), blok memory akan teralokasi, lalu ter-dealokasi. Variable pada heap bisa di-resize menggunakan realloc()

STACK
tipe2 variabel dasar (int, double, dsb) dan tipe2 variable kompleks (array, struct) mengalokasikan memori di stack.
– menyimpan variable temporer yang dibuat pada setiap fungsi
– menganut struktur data FILO (first in last out) –> one way box
– jika suatu fungsi mendeklarasikan variable, variable ini akan di-push ke dalam stack
– setiap kali keluar dari fungsi, semua variable yang telah di-push ke dalam stack akan dibebaskan (deleted)
stack dimanage secara otomatis, tidak perlu dialokasikan dan dibebaskan (free) secara manual
– stack variables: local –> ketika keluar dari suatu fungsi, variables-nya pop out keluar dari stack (hilang/terhapus)
– ada limitasi (bergantung OS) tentang besar variable yang bisa disimpan di-stack
>> ringkasan:
– stack grows and shrinks, as functions push and pop local variables
– no need to managed the memory yourself –> variables are allocated and freed automatically
– stack has size limits
– stack variables only exist while the function that created them is running
– variable-nya ga bisa di-resize

HEAP

– tidak dimanage secara otomatis
– ada free-floating region of memory (??)
– lebih besar dibanding stack
– untuk mengalokasikan memori pada heap: gunakan malloc() atau calloc()
– jika sudah dialokasi, harus free() untuk deallocate
– jika tidak di-dealokasi, maka akan terjadi memory leak: memory sudah disisihkan, tidak bisa digunakan utk proses lain
– memory leaks ini bisa dideteksi dengan tool bernama valgrin
– tidak punya size restriction on variable size
– harus pakai pointer untuk mengakses memory pada heap
– karenanya heap memory itu slightly slower
– tidak seperti stack, variable yg dibuat di heap bisa diakses dari berbagai fungsi dalam program, secara esensial, variable pada heap adalah “global in scope”
– variable-nya bisa di-resize, menggunakan realloc()

Other links to consider/read later:
so: what is heap
so: what and where are stack and heap
computer science theory: what is heap
thinking in c++: dynamic object creation –> LOOKS INTERESTING
jvm: understanding memory management

The hottie MachineLearning, Data Mining/Science

Yang sedang hot sekarang, pernah saya sentuh, dan agak menyesal saya tinggalkan (dan ingin saya lirik lagi) bernama:
– Machine Learning
– Data Mining
– Data Science

Sayang sedang banyak kerjaan yang lain (related to signal processing), jadi data mining dkk harus menunggu (sampai awal 2016 mungkin?). Sementara itu, mari kita simpan yang ingin dilirik lagi, biar nanti kalau ada waktu bisa dibaca

  1. Tentang data mining
    learn how companies can make data related decisions based on set rules
    Microsoft basic data mining tutorial
    Data Mining with Weka
  2. Tentang Machine Learning
    Real word examples of applications of machine learning
    Real life examples where usage of ML algorithms had huge impacts
    Introduction to ML Theory & its Applications: A visual Tutorial w/ examples
    Princeton Theoretical Machine Learning
    Amazon Machine Learning
    Machine Learning with R, an irresponsibly fast tutorial
    Machine Learning with Weka (as workbench)
    @Kaggle.com What tools people generally use to solve problems

    Kaggle R Tutorial
    Python scikit-learn
    Best language for ML

  3. Data mining and its languages
    >> R
    R Code and data (zip)
    k-means clustering
  4. Tentang data science
    Data Science in C or C++ 

Built-in modules to Python

https://docs.python.org/2.7//extending/extending.html

Tentang menambahkan built-in module ke Pyhton

Keuntungan:
Extension modul seperti ini bisa melakukan dua hal yang tidak bisa dilakukan secara langsung di Python:
– bisa mengimplementasikan built-in object types yang baru
– bisa memanggil librari fungsi C dan system calls

untuk extension module bernama spam, diimplementasikan dalam file C bernama spammodule.c

SISI PYTHON

import spam
status = spam.system()

DARI SISI C
Dengan meng-include-kan header
#include <Python.h>
sebelum meng-include-kan standard header manapun

fungsi C yang akan dipanggil oleh code Python
spam.system(string)
adalah sebagai berikut

static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
inst sts;

if (!pyArg_ParseTuple(args, “s”, &command))
return NULL;

sts=system(command);
return Py_BuildValue(“i”, sts);
}