Konsep Ilmu Komputer apa yang harus saya ketahui? [Tutup]

95

Konsep apa dalam Ilmu Komputer yang menurut Anda telah membuat Anda menjadi programmer yang lebih baik?

Gelar saya di Teknik Mesin jadi setelah berakhir sebagai programmer, saya agak kurang dalam hal dasar. Ada beberapa konsep Ilmu Komputer standar yang saya pelajari baru-baru ini yang memberi saya pemahaman yang jauh lebih dalam tentang apa yang saya lakukan, khususnya:

Fitur Bahasa

  • Pointer & Rekursi (Terima kasih Joel!)

Struktur data

  • Daftar Tertaut
  • Hashtables

Algoritma

  • Jenis Gelembung

Jelas, daftarnya agak pendek saat ini jadi saya berharap saran untuk:

  1. Konsep apa yang harus saya pahami,
  2. Sumber daya yang bagus untuk memahaminya dengan benar (karena Wikipedia terkadang bisa sedikit padat dan akademis).
Jon Artus
sumber
5
Jenis gelembung? Jauhi mereka sejauh mungkin! Lebih baik pelajari cara kerja quicksort / heapsort.
Carra
18
Ya, pelajari bubbleort. Pelajari mengapa itu mengerikan. Pelajari quicksort, mergesort, dan lainnya, termasuk kelemahan masing-masing. Tetapi jangan menuliskannya dalam kode produksi: panggil fungsi sortir yang disediakan oleh platform apa pun yang Anda gunakan.
Brian Ensink
@Roger Pate - +1 untuk Anda, orang harus tahu kegunaan algoritme atau struktur data, dan apa yang menyebalkan. Baik Quicksort dan Bubblesort memiliki kinerja kasus terburuk yang sama [O (n ^ 2)], tetapi untuk jenis masukan yang sangat berbeda, dan Bubblesort memiliki kinerja kasus terbaik O (n), di mana QS masih O (n log n). Tentu saja, jika Anda mempertimbangkan Bubblesort maka Anda mungkin ingin memilih jenis Penyisipan.
Andre Artus

Jawaban:

60

Lihatlah posting blog ini oleh Steve Yegge (sebelumnya dari Amazon, sekarang di Google):

Ini menjelaskan beberapa detail tentang lima konsep terpenting yang harus diketahui oleh pengembang:

  1. Pemrograman dasar (termasuk rekursi, file I / O, output yang diformat, loop dll)
  2. Desain berorientasi objek (termasuk pola desain, dll). Anda harus dapat menghasilkan desain OO yang masuk akal serta memahami konsepnya.
  3. Scripting dan regex.
  4. Struktur data - daftar, set, hashtable, pohon, grafik, dan sebagainya - serta notasi Big O dan kompleksitas algoritmik.
  5. Bit, byte, dan bilangan biner - bagaimana bilangan direpresentasikan di dalam komputer, dan bagaimana memanipulasinya.
jammycakes
sumber
Tautan yang bagus. Sedikit fokus pada sisi unix, (benar-benar hilang .NET) tetapi masih bagus.
Toon Krijthe
Tautan hebat - ada banyak hal yang harus saya kerjakan, saya hanya berharap ada beberapa tautan ke halaman bagus yang menjelaskan hal-hal itu.
Jon Artus
Tautan ini akan sangat berguna bagi saya untuk memeriksa diri saya sendiri dan mengikuti dasar-dasarnya. Terima kasih ..
rpr
Setuju, tautan bagus. Sementara banyak dari solusi yang mungkin diidentifikasi berbasis Unix, konsep keseluruhan yang terlibat sangat agnostik bahasa / platform. Bagi sebagian besar programmer, hal-hal seperti rekursi, menulis ADT seperti pohon, dan operasi bitwise sangat jarang terjadi, tetapi itu adalah fondasi yang penting.
Zach Burlingame
4
Saya setuju dengan semuanya kecuali regex. Itu adalah bonus yang bagus, tetapi sebagian besar barangnya adalah dasar-dasar permukaan tanah, fondasi di mana segala sesuatu dibangun ... regex sangat bagus, tapi saya tahu banyak programmer hebat yang tidak pernah menggunakannya, dan tidak pernah membutuhkannya.
Beska
35

Anda pasti harus memahami Big-O notasi dan Big-O estimasi algoritma - apa itu, bagaimana ia digunakan, mengapa penting, bagaimana Anda membandingkan dua algoritma yang diberikan estimasi Big-O mereka, bagaimana Anda membangun Big-O estimasi untuk algoritma sederhana.

tajam
sumber
1
Anda bisa mulai dengan artikel Wikipedia yang saya tautkan - keduanya cukup sederhana dan benar secara matematis.
gigi tajam
3
Anda pasti memiliki opini yang sangat rendah tentang matematika tingkat lanjut. Saya memahami ini di tahun pertama kuliah saya, ketika saya baru setengah jalan melalui kalkulus.
GoatRider
1
Jangan lupakan konsep NP dan ketika ada masalah di dalamnya, pengembang yang mencoba untuk mengkodekan TSP (Travelling Salesman) ke dalam setiap transaksi database untuk tujuan pencarian atau kebodohan lainnya adalah masalah besar =]
Ed James
2
Anda juga harus tahu bahwa O besar tidak memberi tahu Anda algoritma mana yang membutuhkan waktu lebih sedikit. Sesuatu yang kebanyakan lulusan CS tidak pahami
Martin Beckett
3
Itu seperti itu. Ini memberi tahu Anda mana yang memiliki kasus terburuk terbaik, tidak perlu mana yang 'lebih cepat' karena itu tergantung pada set input.
Ed James
30

Saya merasa agak lucu bahwa Anda mencari mata pelajaran ilmu komputer , tetapi menganggap wikipedia terlalu akademis: D

Bagaimanapun, ini dia, tanpa urutan tertentu:

Rik
sumber
2
+1 karena Anda menyebutkan basis data, yang sering diabaikan dalam jenis daftar ini, tetapi konsep yang sangat penting untuk diketahui oleh lulusan Ilmu Komputer yang berpengetahuan luas.
Brian Ensink
14

Beberapa konsep yang membantu perkembangan saya (kecerdasan dan kode):

  • Lexing, Parsing, Pencocokan string, Regex
  • Memoisasi
    • enkapsulasi / pelingkupan / penutupan
    • penyimpanan ke cache
  • Pengulangan
  • Iterator / Generator
  • Pemrograman fungsional - Artikel menakjubkan John Hughes membuat saya tahu "mengapa"

Ini adalah seluruh domain matematika diskrit, tetapi pengantar yang serius diperlukan untuk Ilmu Komputer:

  • Matriks / Aljabar Linear
  • Teori grafik

Meskipun ceramah dan artikel oleh Mark Jason-Dominus sering diarahkan ke peretas Perl, saya pikir setiap programmer akan mendapat manfaat dari presentasi yang jelas dan kode sebenarnya, terutama di Perl Orde Tinggi .

bubaker
sumber
10

Saya akan mengatakan saat ini pemahaman tentang Pemrograman Berorientasi Objek adalah suatu keharusan, bahkan jika Anda tidak perlu menggunakannya setiap hari.

Dari sini saya juga akan mengatakan memahami pola yang paling umum juga dapat membantu.

Jeremy French
sumber
10

Saya melihat beberapa konsep CS yang bagus teridentifikasi tetapi sedikit pembicaraan tentang Matematika.

Saya menyarankan agar Anda melihat ke dalam matematika diskrit . Ini memiliki berbagai macam masalah berguna dimulai dengan bukti logis yang membantu Anda menulis kondisi dalam kode. Teori grafik dan kombinatorik juga membantu dalam penyelesaian masalah yang kompleks dan optimisasi algoritma.

Sementara kita berada pada subjek matematika, aljabar linier biasanya merupakan prasyarat untuk kelas grafis komputer tingkat lanjut.

Berkshire
sumber
1
Jika saya harus memilih hanya satu, itu akan menjadi matematika diskrit. Ini cukup banyak CS 101. Saya sulit sekali memikirkan area atau paradigma dalam pemrograman umum yang tidak tersentuh dalam beberapa cara oleh DM.
Andre Artus
7

Matriks Kompetensi Programmer membahas ini secara mendetail, tetapi saya akan menyoroti beberapa:

  • Struktur data
    • Struktur data tingkat lanjut seperti B-tree, binomial dan fibonacci heaps, AVL / Red Black tree, Splay Trees, Skip List, coba dll.
  • Algoritma
    • Tree, Graph, simple greedy dan divide and conquer algoritma, mampu memahami relevansi level matriks ini.
  • Pemrograman sistem
    • Memahami seluruh tumpukan pemrograman, perangkat keras (CPU + Memori + Cache + Interupsi + microcode), kode biner, perakitan, penautan statis dan dinamis, kompilasi, interpretasi, kompilasi JIT, pengumpulan sampah, heap, tumpukan, pengalamatan memori ...
  • Kontrol Versi Kode Sumber
    • Pengetahuan tentang sistem VCS terdistribusi. Telah mencoba Bzr / Mercurial / Darcs / Git
  • Bangun Otomasi
    • Dapat menyiapkan skrip untuk membangun sistem dan juga dokumentasi, penginstal, membuat catatan rilis, dan menandai kode di kontrol sumber
  • Pengujian otomatis
    • Memahami dan dapat menyiapkan pengujian fungsional, beban / performa, dan UI otomatis
  • Masalah Dekomposisi
    • Gunakan struktur data dan algoritme yang sesuai dan munculkan kode generik / berorientasi objek yang merangkum aspek masalah yang dapat berubah.
  • Dekomposisi Sistem
    • Mampu memvisualisasikan dan merancang sistem yang kompleks dengan berbagai lini produk dan integrasi dengan sistem eksternal. Juga harus dapat merancang sistem pendukung operasi seperti pemantauan, pelaporan, kegagalan, dll.
cgp
sumber
5

Saya menemukan grafik dan beberapa algoritma terapan seperti kedalaman pertama, pencarian nafas pertama, jalur terpendek dll sangat berguna. Orientasi objek juga merupakan konsep yang sangat umum.

Mork0075
sumber
4

Aturan 1: Perangkat Lunak adalah Penangkap Pengetahuan . Software berarti sesuatu. Jika Anda tidak mengerti artinya, luangkan lebih banyak waktu untuk berbicara dengan pengguna untuk memahami apa yang mereka lakukan.

Algoritma dan Struktur Data adalah dua sisi dari mata uang yang sama. Algoritma bergantung pada struktur data, struktur data bergantung pada algoritma.

Lupakan jenis gelembung secepat mungkin. Sungguh. Semua bahasa modern (Java, Python, dll.) Memiliki kelas koleksi yang menerapkan pengurutan yang lebih baik daripada pengurutan gelembung. Sama sekali tidak ada keadaan di mana Anda harus menggunakan jenis gelembung untuk apa pun. Anda harus mencari kelas koleksi yang menyertakan metode sortir. Lebih baik, Anda harus mencari algoritma yang menghindari penyortiran seluruhnya.

Anda harus mempelajari beberapa bahasa.

  • Bahasa pemrograman (Java, Python, dll.)

  • Bahasa kulit.

  • Bahasa database (SQL)

  • Bahasa presentasi (HTML dan CSS)

  • Bahasa representasi data lainnya (XML, JSON)

Anda harus mempelajari beberapa struktur data.

  • Urutan (daftar, tupel, file)

  • Hierarki (seperti dokumen XML dan HTML, serta sistem file dasar)

  • Relasional (seperti database, dan sistem file dengan tautan keras dan lunak dimasukkan)

  • Peta (atau Indeks atau Array Asosiatif) termasuk Peta Hash dan Peta Pohon

  • Set

Ditambah beberapa analisis kompleksitas algoritmik. Terkadang disebut "Big O". Mengapa semacam gelembung itu buruk adalah O ( n ^ 2), di mana quicksort adalah O ( n log n ).

S. Lott
sumber
Sebagai catatan, saya tidak pernah benar-benar menggunakan jenis gelembung! Saya baru saja mempelajari cara kerjanya sebagai pengalaman yang menarik, dan menemukan bahwa ada beberapa algoritme lain yang harus dipahami orang dengan cukup baik untuk menulis dalam bahasa pilihan mereka.
Jon Artus
Ada algoritma yang tak terhitung banyaknya. Kebanyakan dari mereka buruk. Beberapa dari mereka bagus. Bubble Sort benar-benar buruk. Beli buku APA PUN tentang algoritme dan lanjutkan.
S. Lott
Hanya memilih nit, tetapi Quicksort adalah kasus terburuk O (n ^ 2). Saya hanya menunjukkannya karena menurut saya memahami mengapa ini benar adalah latihan pendidikan yang berharga saat mempelajari algoritme dasar.
Brian Ensink
Untuk quicksort, ya - latihan penting. Untuk bubble sort, satu-satunya hal adalah melihat seberapa buruk algoritme itu. Memahami tipikal vs. kasus terburuk adalah penting secara umum.
S. Lott
4

Nah kaleng cacing sudah dibuka sekarang! :)
Saya memulai di bidang Teknik Elektro.

Desain Basis Data Relasional: Melacak data seperti Arnold dalam "Kindergarden Cop".
Ini bisa menjadi kekacauan total. Itu harus dikontrol.
Bagaimana cara menyimpan data Anda, di lokasi paling sedikit, dengan duplikasi informasi paling sedikit. Bagaimana menjaga data Anda tetap ringan, dan mudah diakses. Bagaimana mengontrol pertumbuhan dan integritas data.

Desain Antarmuka Pengguna (UI): Ini adalah bagaimana Pengguna harus mengakses data yang kami lacak.
Sebagian besar UI dirancang oleh pengembang. Jadi, sayangnya sebagian besar UI, paralel dengan desain database. Pengguna sama sekali tidak peduli dengan desain data. Mereka hanya menginginkan apa yang mereka inginkan. Mereka ingin mendapatkannya dengan mudah. Biasanya ini menuntut pemisahan besar dari desain data dan Antarmuka Pengguna. Belajarlah untuk memisahkan "rekayasa" Anda dari "keramahan selatan" Anda.

Pemrograman Berorientasi Objek: Banyak bahasa bermuara pada format ini.

Pemrosesan Paralel - Multi-Threading: Banyak prosesor membuat pekerjaan menjadi cepat!
Komputer paralel telah ada selama beberapa dekade. Mereka sudah ada di desktop kita selama beberapa waktu sekarang. Dengan peristiwa "komputasi awan", pemrosesan paralel besar-besaran tidak hanya wajib tetapi juga lebih disukai. Ini sangat kuat! Ada banyak potensi pekerjaan untuk pengembang paralel.

Memahami Aturan Bisnis: Ini membantu Anda membuat banyak logika Anda, berbasis tabel.
Banyak kondisi IFblock dapat ditempatkan di tabel aturan bisnis. Untuk mengubah logika, cukup ubah informasi dalam tabel. Sedikit / Tidak ada pengodean ulang. Sedikit / Tidak ada kompilasi ulang.

Acara Mengawasi ... Metode melakukan pekerjaan:
Pisahkan hal-hal dalam kode Anda. Ini mempermudah orang lain untuk melakukan pembaruan di masa mendatang. Ini juga agak sejajar dengan kerangka Model / View / Controller (MVC).

PJ

PJ
sumber
3

Bagi saya, saya mendapat banyak dari kursus berikut di universitas

  • Manajemen proyek
  • Interaksi Komputer Manusia (Membantu kami para ahli membuat layar yang lebih ramah pengguna)
  • Desain Database (Termasuk bagaimana database bekerja, log transaksi, penguncian, dll)
  • Data pergudangan
  • Grafik (OpenGL)
  • Algoritma Lanjutan
  • Struktur data

Hal-hal yang saya harap telah saya lakukan di universitas

  • Konstruksi Penyusun
  • Pola desain
  • Teori automata
uriDium
sumber
3

LOGIC - Saya hanya melebih-lebihkan pentingnya logika dalam pemrograman. Kamu bilang kamu kuliah di Teknik Mesin jadi kamu harus tahu seberapa banyak matematika bisa membuat hidupmu lebih mudah.

Proposisi Logika , Pertama-Order Logic , Kedua-Order Logic : ini adalah alat yang sangat kuat. Mungkin hal terpenting (dan satu-satunya) yang saya pelajari di universitas. Logika seperti artileri berat seorang programmer - banyak masalah yang sangat kompleks (dan juga yang tidak terlalu rumit) menjadi jauh lebih sederhana setelah Anda memasukkannya ke dalam bentuk yang terorganisir dan logis. Ini seperti Aljabar Linear untuk Insinyur Mekanik.

Tamas Czinege
sumber
3

Saya pikir pemahaman yang baik tentang cara kerja kompiler adalah baik untuk diketahui. Aho memiliki buku klasik tentang konsep yang digunakan dalam membuat kompiler. Judulnya adalah Penyusun: Prinsip, Teknik, dan Alat. Nama panggilannya adalah Buku Naga. Untuk benar-benar memahami buku itu, Anda harus memiliki pemahaman tentang bahasa formal. Hopcroft memiliki buku bagus tentang itu - Pengantar Teori Automata, Bahasa, dan Komputasi.

zooropa
sumber
2

Banyak tanggapan yang baik telah disebutkan di sini, tetapi saya ingin menambahkan bagian dari apa yang penting, tetapi sejauh ini belum dibahas.

Setelah 15 tahun pengembangan Perangkat Lunak profesional pasca sarjana, saya mendapati bahwa saya secara teratur menggunakan beberapa konsep berikut dari sekolah:

  • Konsep OO umum, dan fitur bahasa pemrograman modern (kelas, penyembunyian data, dll).
  • Metrik kinerja algoritme (notasi O Besar). Saat mendesain algoritme, melakukan analisis Big O untuk menentukan biaya algoritme, dan mencari alternatif yang lebih efisien di area bottleneck.
  • Daftar tertaut dan struktur data kompleks lainnya.
  • Penyortiran cepat, dan konsep penyortiran berbeda.
  • Pohon dan manipulasi pohon cepat.

Jika bahasa / platform Anda tidak mendukung Pengumpulan Sampah, alokasi dan pembersihan memori sangat penting, dan akan ditambahkan ke daftar.

pearcewg.dll
sumber
2

Saya memilih matematika Diskrit. Ilmu komputer adalah abstraksi. belajar berpikir seperti seorang matematikawan sangat membantu.

Saya juga ingin menambahkan apa yang dikatakan S. Lott tentang bahasa. Mempelajari banyak JENIS bahasa juga penting. Tidak hanya dikompilasi vs scripting. Tetapi fungsional (ML, Lisp, Haskell) logis (Prolog) berorientasi objek (C ++, Java, Smalltalk) imperatif (C, Pascal, FORTRAN bahkan).

Semakin banyak paradigma pemrograman yang Anda ketahui, semakin mudah untuk mengambil bahasa baru saat bahasa baru yang keren datang!

Brian Postow
sumber
2

Beberapa konsep OS

 ( memory, IO, Scheduling, process\Threads, multithreading )

[Buku bagus " Sistem Operasi Modern , 2nd Edition, Andrew S. Tanenbaum"]

Pengetahuan dasar jaringan komputer

[buku bagus oleh Tanenbaum

Konsep OOPS

Autometa terbatas

Sebuah bahasa pemrograman (saya belajar C terlebih dahulu kemudian C ++)

Algoritma (Kompleksitas ruang \ waktu, urutkan, pencarian, pohon, daftar tertaut, tumpukan, antrian)

[buku bagus Pengantar Algoritma ]

aJ.
sumber
meta otomatis? - pasti "automata" sesuai edit pertama.
Tom Duckering
Ups! macet untuk memeriksa ejaan kurasa. Saya akan memperbaikinya. Terima kasih.
aJ.
2

Berusaha keras untuk kopling rendah, kohesi tinggi .

kopling rendah, kohesi tinggi

(Saya mencuri gambar ini dari situs web yang ditautkan di atas)

Joe Phillips
sumber
1

Cobalah untuk memahami semua level pemrograman. Dari level terendah (perakitan) hingga level tertinggi.

Ambil contoh rekursi yang merupakan fitur yang mudah :) Cobalah belajar assembly dan buat program yang akan menggunakan rekursi dalam assembly.

Chrys
sumber
1

Algoritma.

Belajar menggunakan bahasa pemrograman dengan cara yang menurun adalah sesuatu yang dapat Anda pelajari sambil jalan, tetapi hampir tidak mungkin untuk menemukan sendiri semua Algoritma yang banyak digunakan .. Seseorang setidaknya harus menyadari apa yang bisa dan tidak bisa dilakukan dengan beberapa masalah.

Misalnya seseorang tidak bisa menulis beberapa program dengan bubble-sort dan berharap itu dianggap baik, tidak peduli seberapa bagus kodenya.

Singkatnya - lihat Pengantar Algoritma

Tidak perlu menguasainya, ketahuilah apa yang terjadi ...

Liran Orevi
sumber
1

Sebagai lulusan baru dari gelar ilmu komputer, saya akan merekomendasikan yang berikut ini:

CodeMonkey
sumber
1

Ini jelas merupakan pemahaman yang baik tentang pemrograman berorientasi Objek, prinsip-prinsip panduan yang baik seperti Prinsip SOLID dan mengikuti pola dan praktik yang sudah ada.

Jika Anda melihat SOA, atau DDD, semuanya pada akhirnya kembali ke beberapa bentuk konsep OOP.

Saya akan merekomendasikan Anda untuk mendapatkan beberapa buku OOP yang bagus dan juga memilih bahasa yang kaya seperti C # atau Java untuk memulai

OOP oleh Grady Booch

(PHP, kawan-kawan ruby ​​tolong jangan meremehkan saya, saya hanya memberikan beberapa contoh untuk memulai, Anda dapat memberikan jawaban dan saran Anda sendiri di sini)

Srikar Doddi
sumber
1

Struktur dan Interpretasi Program Komputer . Jika Anda memahami buku ini, segala sesuatu yang lain dapat dibangun dengan mudah di atas fondasi itu. Jika Anda memiliki masalah dengan konsep dalam buku, Anda mungkin seorang pengembang perangkat lunak tetapi bukan ilmuwan komputer.

lambdabunny.dll
sumber
1

Saya tidak akan memberi tahu Anda konsep khusus apa pun untuk dipelajari, tetapi sebaliknya akan merekomendasikan agar Anda melakukan banyak bacaan ringan di berbagai topik. Jangan khawatir tentang mendapatkan pemahaman mendalam tentang setiap subjek yang Anda baca - pada titik ini, yang lebih penting adalah Anda dapat mengenali jenis masalah yang Anda cari, sehingga Anda dapat melakukan beberapa hanya- belajar tepat waktu ketika Anda benar-benar dihadapkan pada hal itu. Dengan kata lain, tidak apa-apa jika Anda tidak tahu cara menyelesaikan masalah kombinatorik, selama Anda cukup tahu untuk mencari "kombinatorik" saat Anda perlu melihat berapa banyak cara untuk mengatur sekumpulan objek atau memilih subset .

Wikipedia adalah sumber yang cukup bagus untuk jenis penjelajahan yang luas ini, terutama jika Anda baru saja membaca sekilas. Yang lebih baik, terutama jika Anda menganggap Wikipedia terlalu akademis atau tidak dapat diakses, adalah wiki C2 . (Hal ini, cukup menarik, para wiki asli diciptakan oleh Ward Cunningham).

John Hyland
sumber
0

Saya pikir penting untuk memahami teori dasar di balik multi-threading, tanpa ini akan sulit untuk melihat bahwa mungkin ada masalah, sampai Anda melakukan debug di server langsung pada jam 4 pada hari Minggu pagi.

Semaphore, bagian & acara penting.

Jim T
sumber
0

Tidak, bukan bubble sort, quicksort. Ini adalah rata-rata pengurutan gelembung benda-O besar O (n ^ 2), quicksort adalah O (n * log (n)).

GoatRider
sumber
0

Saya akan mengatakan di bawah ini adalah hal yang paling penting

  • Pemrograman berorientasi objek
  • Konsep Sistem Operasi
    • Proses dan Thread
    • Algoritma Penjadwalan
  • Struktur data
    • Jenis penyimpanan dan pengumpulan data, jenis (linkedlist, hash, array, dll.)
    • Mengurutkan Algoritma
    • Kompleksitas algoritma

Kemudian Pergi ke hal-hal yang berhubungan dengan bahasa tertentu. Saya harap ini membantu !!

Mutan
sumber
0

Saya akan mulai dengan kutipan:

"Jika satu-satunya alat yang Anda miliki adalah palu, Anda memperlakukan semuanya seperti paku". (Abraham Maslow)

Prinsip yang paling penting, IMO, adalah mengetahui banyak paradigma pemrograman, bahasa, dan mengetahui dengan baik tentang alat yang Anda gunakan. Masalah apa pun dapat diselesaikan dalam hampir semua bahasa yang Anda pilih, baik itu bahasa utama yang sangat populer dengan pustaka defaultnya yang besar atau bahasa khusus kecil seperti AutoHotKey. Tugas pertama programmer adalah menentukan apa yang akan digunakan sesuai dengan spesifikasi masalah. Beberapa konsep memberikan pendekatan topik yang lebih baik, apa pun tujuan utama Anda - kecanggihan, kebingungan, kinerja, portabilitas, pemeliharaan, ukuran kode kecil ...

Jika tidak, Anda akan menyelesaikan seperti beberapa programmer yang mati-matian mencoba melakukan sesuatu dalam 1 bahasa yang mereka kuasai, sementara masalahnya bisa jadi sepele untuk dipecahkan dalam konteks pemrograman yang berbeda.

Saran ini sejalan dengan kecenderungan saat ini untuk proyek multi-bahasa (ambil aplikasi web misalnya, yang mungkin melibatkan beberapa bahasa dalam aplikasi tunggal, seperti C #, JS, CSS, XPath, SQL, XML, HMTL, RegExp .... dan bahkan paradigma pemrograman yang berbeda (misalnya, C # baru-baru ini memperkenalkan beberapa konsep dari paradigma pemrograman fungsional, lambda).

Jadi, yang paling dasar adalah belajar terus menerus, selamanya :)

majkinetor
sumber
0

Saya pikir Grafik 3D adalah sesuatu yang harus dipelajari setiap orang. Atau setidaknya bagaimana menggunakan vektor homogen dan transformasi matriks dengan benar.

Ini dapat membantu tidak hanya untuk membuat aplikasi 3d tetapi juga di bidang mekanik seperti kinematika terbalik pada robot, menghitung momen, dan banyak hal lainnya.

Saya tidak sepenuhnya memahami aljabar linier sampai saya membaca grafik-3d, salah satu kursus terbaik yang pernah saya ambil meskipun guru kami buruk.

Pria itu
sumber
0

Karena mesin dengan banyak inti (baik CPU dan GPU) menjadi standar, saya akan mengatakan untuk menyertakan Algoritma Terdistribusi (dari banyak utas ke banyak mesin). Sangat penting untuk memahami pemrosesan multi-threading dan terdistribusi. Mohon maaf karena tautan tersebut tidak memberikan banyak bantuan.

Erich Mirabal
sumber