Genel olarak programlama, deneyim kazandıkça okunması, yazılması ve anlaşılması kolaylaşır mı? [kapalı]


80

Programlamaya yeni başlıyorum ve kitap okuyorum, ders çalışıyorum, yazı okudum ve hatırlamıyorum. Programlamaya öğrenmeye başladığımdan beri harika sonuçlar alıyorum ve yeni başlayan biriyken, programlama hakkında her şeyi bildiğimi sanıyordum, ama daha fazla öğrendiğimde bu alanın ne kadar zor olduğunu fark ettim (Aslında tüm alanların zor olması, ama mesele bu değil).

Günümüzde, işlevsel yazılımlar yazdım ve 3 dilin TEMELLERİNİ öğrendim ve sadece bir dilde ortadayım. MYSQL, OpenGL programlama, hatta Visual Studio C ++ kodu gibi gelişmiş şeylere baktığımda başımı ağrıtıyor ve hatta birçok web sitesinin HTML kaynak kodunu görüntülerken bile (google chrome tarafından görülen çoğu web sitesindeki kaynak kodları çok karışık ve örgütsüz görünüyor) (beni beynimin sınırına kadar karıştırıyor). İlk başta her şey basit görünüyor, ancak bu gelişmiş şeylere bakarken, nasıl biri bu kadar çok şey öğrenebilir diye merak ediyor.

Özet olarak, soru, özetle, eğer bu, kariyerinde ilerledikçe bir programcının netleşmesidir. Yukarıda listelenenlerin (OpenGL, MySQL, gelişmiş html siteleri) daha fazla öğrendikçe okuması, yazması ve anlaması kolaylaştığından karmaşık konular mı, yoksa ilerledikçe daha karmaşık hale mi geliyor? Programlama dünyasında bir karınca olduğun duygusuyla nasıl savaşabilirsin ve bu şey seni ezmek için olan ayaktır?


24

Başka bir şey gibi, evet. Teknoloji sizi değiştirene kadar. :-)
MathAttack

3
"Deneyiminiz" aynı şeyleri tekrar tekrar okumadığı sürece. Kendini yeni eşyalarla uzat.
JeffO

karmaşık bir HTML sayfasını analiz etmek için küçük bir ipucu, Firefox Firebug veya Chrome'un İnceleme Öğesi'ni kullanmak istersiniz.
Yalan Ryan

6
"Yeni başlayanlarda programlama ile ilgili her şeyi bildiğimi düşünürdüm." Orada oldum ve ne kadar çok şey öğrenirsem o kadar az şey bildiğimi o kadar çok anlarım.
Lieven Keersmaekers

Yanıtlar:


134

Kısa cevap: hayır.

Uzun cevap:

Diğer insanların kodlarını okumak kolaylaşır, evet. Ama sadece okuyorum. Tecrübe ve beceri kazandıkça, geliştirici olarak kişisel gereksinimleriniz artar.

  • Sadece kod yazmak istemiyorsun. Güzel kod yazmak istiyorsun .

  • Kodunuzun ideal koşullarda çalıştığını varsaymıyorsunuz . Kodunuzu çalıştırırken oluşabilecek tüm kötü şeyleri düşünmeye, istisnaları ele almaya, donanım sorunlarını, ağ gecikmesini ve becerileriniz arttıkça sorun büyüdüğünü düşünmeye başlarsınız.

  • Kodunu bildiğiniz tek dilde okuyup yazmıyorsunuz. Yetenekli bir geliştirici olarak, şu anda sahip olduğunuz bu belirli sorunu çözmek için, işlevsel programlamanın çok daha iyi bir alternatif olduğunu biliyorsunuz, bu nedenle şimdi işlevsel programlama dilinde kod okuyup yazmanız gerekiyor.

  • Kendinizi bildiğiniz küçük kütüphanelerle sınırlandırmazsınız. C # kodlarsanız, birçok .NET Framework kütüphanesinin gücünü bilmek ve kullanmak istersiniz .

  • Artık not defteri kullanmıyorsun. Güçlü IDE'nize ihtiyacınız var ve test kodunun nasıl bir araya getirileceğini, kod ölçümlerinin ne olduğunu ve IDE'nizin size gösterebileceği yüzlerce seçenek ve pencerenin ne anlama geldiğini bilmek istiyorsunuz.

  • Kendinizi mütevazı bir şekilde, dilin size sunduğu temel araçlarla sınırlamak istemezsiniz . C # 'da jenerik, kod sözleşmeleri, yansıma, olaya dayalı gelişim, LINQ ile işlevsel yönler, Reaktif uzantılar ve öğrendiğiniz bir sürü şeyi, tek bir projede, eğer bunlar daha iyi yazmanıza yardımcı olursa, kullanmak istiyorsunuz. kodu.

  • Kod yazmaya başlamıyorsun . Gereksinimlerinizin % 80 ila 90'ını harcayarak , uygulamanızın mimarisini oluşturarak, birim testleri yazarak, dokümantasyon yazarken, vb . Ve zamanınızın yalnızca% 10 ila 20'sini gerçek kod yazarak harcarsınız .

  • Güvenliği önemsiyorsun . Başvurularınız tarafından manipüle edilen verilerle ortaya çıkabilecek yasal sorunları biliyorsunuz . ITIL'in ne olduğunu biliyorsun . Bazı ISO standartlarını biliyorsunuz ve günlük olarak bunları işinizde uygularsınız.

Evet, deneyim ve beceri kazanıyorsunuz ve kazandığınız tüm bilgi ve entelektüel yeteneklerle belirli bir problemi çözmek daha kolay hale geliyor. Ancak çözmeniz gereken problemler de büyür ve programlamaya başladığınızda çözdüğüm seviyedeki problemleri çözmekten heyecan duymazsınız.

Beceri kazanırken, yazılım geliştirmenin karmaşıklığı hakkında da bir fikir edinir, programlamayı öğrenmeye başladığınızda bile hayal bile edemediğiniz unsurları öğrenirsiniz ve günlük olarak öğrendiğiniz her şeyi uygulamak ve uygulamak istersiniz.

Kısacası:

  1. Programlamayı öğrenmeye başladığınız ilk gün, 1'den 100'e kadar olan tüm sayıları ikiye bölünebilir olarak listeleme görevi oldukça karmaşıktır: ekranda döngüler yapmayı ve sayıları ekranda göstermeyi öğrendiniz, ancak nasıl yapılacağını bilmiyorsunuz. sayı iki ile bölünebilir.

  2. On yıl sonra, aynı alıştırma çok basit görünüyor. Ancak, on yıl sonra, işlemleri kullanması gereken, birkaç sunucuda barındırılan ve oturum durumunu sunucular arasında doğru şekilde işlemesi gereken uygulamalar yazıyorsunuz ve müşterilerinizin banka hesap ayrıntılarını, sonuçta ortaya çıkan tüm güvenlik ve yasal yönleriyle saklıyorsunuz.

  3. ... Ve kendinizi merak ediyorsanız "Bunu nasıl yapabilirim?" On yıl önce yaptığınız gibi, döngüleri olan bir ekrana numaraları görüntülemek zorunda kaldığınızda.

Bir etki alanında sizin için her şey kolaylaştığında, bu etki alanında mükemmele ulaştığınız veya artık umursamadığınız anlamına gelir.

Ne kadar akıllı olursanız olun, yazılım geliştirme kadar geniş bir alanda mükemmelliğe ulaşmak imkansızdır.


36
Her ikisi de donmuşsa su üzerinde yürümek ve bir spesifikasyondan yazılım geliştirmek kolaydır (bu, "Kod yazmaya başlamıyorsunuz. Ayları toplamak için harcıyorsun" un biraz gerçekçi olmadığını gösteriyor)
jfs

9
"fonksiyonel programlama çok daha iyi bir alternatif " tartışmalı.
jfs

15
"İşlevsel programlama" bitinin, genel kullanım için işlevsel programlamanın gerçekten daha iyi olduğunu ima etmek yerine "iş için doğru aracı kullanma" örneği olduğuna kesinlikle inanıyorum.
Ben Brocka

7
Ayrıca, hiçbir gelişme göstermeden “ayları bir araya getirme gereksinimlerinin” yalnızca temelde idealleşmiş bir Şelale modelinde olacağını not edeceğim. Yinelemiyorsanız, kendinizi ve projenizi öldürüyorsunuz.
Ben

8
"Asla kolay olmuyor, sadece daha hızlı gidiyorsun." / Greg LeMond /
daGrevis

20

Çocukken konuşmayı ve sonra anadili okumayı öğreniyorsunuz. Sade mekaniği başlangıçta bir mücadele, ancak bir noktada akıcı geliyor. Bununla birlikte, hala okumadığınız sonsuz bir kitap kaynağınız var ve bazı konularda sadece kitabı anlayabilmek için önce kelime bilginizi arttırmanız gerekiyor.

Aynı bilgisayar programlama için de geçerli. Bir noktada, dilin kendisi yabancı bir dil gibi hissetmeyi bırakıyor, ancak hala o dilde henüz bilmediğiniz birçok şey var. Ancak her şey biraz çabayla sizin için erişilebilir.

Bazı programlama işleri çok tekrarlıdır, temel olarak farklı müşteriler için benzer yazılımları yeniden uygular. Bu işlerde bir öğrenme platosuna çarptığını hissedebilirsiniz. Diğer işler her zaman yeni ve benzersiz bir şey yapıyor ve yeni şeyler öğrenmekten asla vazgeçmiyorsunuz.


18

Burada çok iyi cevaplar var ama birkaç kısa nokta daha ekleyebileceğimi düşündüm:

Yeni başlayanlarda programlama hakkında her şeyi bildiğimi düşünürdüm, ama daha çok öğrendiğimde bu alanın ne kadar zor olduğunu anladım.

Buna Dunning-Kruger etkisi denir . Başlangıç ​​programcıları arasında ve aslında birçok alanda yeni başlayanlar arasında oldukça yaygındır.

Google chrome tarafından görülen, web sitelerinde bulunan çoğu kaynak kodları çok dağınık ve örgütsüz görünüyor

Bu web sitelerini yazanlar mı istiyorsun onları anlamak mümkün? Muhtemelen değil. Anlaşılması zor bir koda sahip olmak kendi çıkarları için.

bu bana nasıl bu kadar çok şey öğrenebileceğini merak ediyor

By uzmanlaşmış . Son derece dar bir alanda uzmanım: C # compiler semantik analizörlerinin tasarımı ve uygulaması. On beş yılını OpenGL veya XML veya HTML ya da her neyse inceleyerek geçirirsem, bu konuda uzman olurdum ve anlamsal analizciler tarafından karıştırılırdım. Ama yapmadım ve bu nedenle OpenGL, XML ve HTML hakkında çok temel bir anlayışa sahibim.

Özet olarak, soru, özetle, eğer bu, kariyerinde ilerledikçe bir programcının netleşmesidir.

Evet, çünkü daha büyük kalıpları görmeye başlarsınız. Örneğin OpenGL'yi ele alalım. Muhtemelen bir grup "API kütüphanesi" gördünüz - kodla arabirim kurma yönteminiz belirli argümanlarla adlandırılmış bir dizi işlevi çağırmakla ilgili büyük kod parçaları. Ve OpenGL'nin temel bir anlayışını sadece bir API olduğunu anlamaktan anlayabilirsiniz.

Daha fazla deneyim edindiğinizde ve bir sürü farklı programlama tekniği gördüğünüzde, görünüşte alakasız teknolojilerin (örneğin, C # in OpenGL ve LINQ) ortaklıkları olduğunu fark edersiniz. Eğer inşa nerede Hem API'ler olan iş akışları yapabilirsiniz etrafında boru verileri ve bu iş akışıyla ilgili optimize ve diğer dönüşüm çalıştırmak zengin ve ilginç şekillerde. Araç kutunuzda bu konsepti elde ettikten sonra, aniden bu modeli kullanan herhangi bir API'nin gücünden yararlanmanız çok daha kolay hale gelir.

Yukarıda listelenenlerin (OpenGL, MySQL, gelişmiş html siteleri) daha fazla öğrendikçe okuması, yazması ve anlaması kolaylaştığından karmaşık konular mı, yoksa ilerledikçe daha karmaşık hale mi geliyor?

Hem daha kolay hem de daha karmaşık hale gelirler. Daha kolay çünkü, dediğim gibi, sistemi daha etkili kullanmanıza olanak tanıyan sistemin tasarımının altında yatan daha büyük düşünce kalıplarını tanımaya başlarsınız. Daha karmaşık, çünkü şimdi daha karmaşık sorunları çözmek için sistemi kullanabilirsiniz ve daha sonra sistemin sınırlamalarına girmeye başlayabilirsiniz.

Programlama dünyasında bir karınca olduğun duygusuyla nasıl savaşabilirsin ve bu şey seni ezmek için olan ayaktır?

Sen bir karıncasın; hepimiz karıncalarız. Ama bu şeyler seni ezen ayak değil; keşfettiğiniz, yaşadığınız, faydalanabileceğiniz ve geliştireceğiniz dünya. Sen, karınca, onun sadece küçük, küçük bir kısmını keşfedebiliyorsun. Gerçek değer katacağınız ve uzman olabileceğiniz bir parça seçin.


2
Bu cevap için çok teşekkürler, geri kalanların üstünde, çünkü sadece asıl soruma cevap vermiyor, aynı zamanda bazı şeyler hakkında gözlerimi açıyor. +1
Bugster

@Eric: “Uzmanlık insan için değil, uzmanlık içindir” dediği bu tür konularda bir insana ne söylersiniz?
Joan Venge

@JoanVenge Birisi bunu söyler mi? Genellikle insanlar uzmanlaşmak ve benzersiz olmakla ilgilidir ve çok daha fazlası, kendilerini hayvanlardan (veya böceklerden) ayırma ihtiyacı duyuyorlarsa.
Matthew

1
Dunning-Kruger Efektinin , vasıfsızların kendi beceriksizliklerini tanımalarını ve kendi yeteneklerini doğru bir şekilde değerlendirememeleri olarak tanımlandığı şeyi yanlış anlıyorsunuz . Eğer tanıyamıyorsanız, her şeyi bilmiyorsunuz, asla yeni bir şey öğrenemezsiniz. Bunu tanıyabilirseniz, DKE değildir.

+1 için Gerçek değeri ekleyebileceğiniz ve uzman olabileceğiniz bir parça seçin.
Akshay Khot

14

Kısa cevap, evet.

Verilen zaman ve maruz kalma bu şeyleri anlamak daha kolay hale gelir.

Sitelere, tarayıcınızdaki geliştirme araçlarından bakarken genellikle bir çerçeve tarafından oluşturulduğunu unutmayın. Herhangi bir şey olmasına izin verin ... ASP.NET, JSP, RoR, Django, ... kim bilir. Bu çerçevelerin bazıları diğerlerinden daha temiz kod üretir.

Kapanırken ... maruz kalma yeterliliğe yol açar. Bu duyguyu bastırmanın yolu yok. Sadece tecrübe ve öğrenme. Taşınması, etki alanı bilgisi edinmesi ve ortamınızın kullandığı becerileri öğrenmek zaman alır.


1
Kodu yazan kişi iyi uygulamalar ve hem genel olarak dilin hem de genel olarak programcıların olağan deyimlerini kullandığı sürece bunun bir gerçeği vardır. Kötü kodlama ve / veya kasıtlı gizleme sizi bir taramaya yavaşlatabilir. CodeGolf.SE tarafından bırakmayı deneyin . Yarışma metriğini değiştirdiği için iyi uygulamalar feda edildiğinden "açık" versiyonlar bile zorlu bir duruş olabilir.
dmckee

@dmckee Kötü kod bile deneyim ile okumak için çok daha kolay hale gelir. Bunu özellikle C ++ 'da farkettim (ve birçok kötü kod okumak zorunda kaldım ). Elbette bu aşırı bir engel, ancak yine de kötü tasarım ve yaygın hatalara rastlamaya başladığınızda çok daha kolay hale geliyor. Bunlar ayrıca öğreneceğiniz bir tür deyimdir.
Konrad Rudolph

2

Daha önce verilmiş olan cevapların bazılarına katılıyorum ancak kod okuma konusunda tartışılmaması gereken bir nokta olduğunu düşünüyorum. Bazı açık kaynaklı kodlara bakmaya başladığımda, çok büyük ve çok büyük görünüyordu. Ama tahmin et ne oldu? her zaman çok büyük olacak. Bir noktada, özellikle bilmek ve devam etmek istediğinizi ayıklamakta daha iyi olduğunuzu fark edersiniz.

Ancak verdiğiniz bir örnek, bir sürü HTML koduna bakmaktı:

Neden HTML koduna bakıyorsun? Muhtemelen hayır çünkü tüm sitenin HTML kodunu öğrenmek istiyorsun. Muhtemelen almayı umduğunuz belirli bir numara var. Bu durumda, ilgili HTML'yi firebug gibi bir araçla bulun.

Tüm sitenin nasıl yapıldığını gerçekten öğrenmek istiyorsanız, işlenen HTML'in bunu yapmanın bir yolu olmadığını fark ettiniz. Benzer teknolojiyi kullanarak açık kaynaklı bir projeye bakmaktan daha iyi olurdu. Ancak, tüm bir projenin kodunu öğrenmeye çalışmak göründüğü kadar değerli değildir. Sıkıcı, zaman alıcı, öğrendiklerinizi unutmak kolaydır ve sonunda bunun için gösterecek hiçbir şeyiniz yoktur. Eklentileri yazmak, özellik eklemeler yapmak veya kendi projeleriniz için iskele ve tavsiyeler olarak kullanmak için, diğer insanların kodlarını hiç bitmeden ve çok daha fazlasını okumaktan daha az şey öğreneceksiniz.

Kendi çalışmanızla ilgili bir şeyler elde etmek için mutlak minimum değeri öğrenmeye çalışın. Yalnızca sıkışıp kaldığınızda veya belirli bir yeni şey öğrenmek istediğinizde referans noktalarınıza geri dönün. Bu, her şeyi anlamanız veya karanlıkta programladığınız bazı geleneksel bilgeliğe aykırıdır. Ama nihayetinde bu amacın imkansız olduğunu fark edersiniz ve her şeyi bilme hedeflerini ve üzerinde çalıştığınız şeyi gerçekten bitirmeyi hedeflemenizi öğrenirsiniz.


2

Kısa cevap EVET'tir, ancak çoğu, deneyimi nasıl tanımladığınıza bağlıdır.

Geliştirilmesi gereken en az 3 bölüm olduğunu düşünüyorum. Her segmentte daha iyi hale geldikçe, bazı şeyler netleşir.

  1. İŞ gerekliliklerini anlamak . Bu size uygulamanın daha iyi bir kuşbakışı görüntüsünü verir. İş kurallarının neden ne olduklarını daha iyi anlayabilirsiniz, bazı şeylerin neden belirli bir şekilde yapıldığını daha hızlı öğrenirsiniz. Örn: Müşterilerinizin X hükümet yönetmeliğine uymaları gerekir, bu yüzden Y dökümanını hazırlamaları gerekir, bu yüzden sakıncasına görünüşte işe yaramayan bilgilere ihtiyaç duyarlar.

  2. TEKNİK gereklilikleri anlamak . Bu neden teknik açıdan daha iyi olduğunu anlamak dışında # 1 gibidir. Bazı araç ve teknolojilerin, işlerin neden belli bir şekilde yapıldığını anlamak zor olmadan onlarla başa çıkana kadar kendi tuhaflıkları vardır. Eski sistemlerle uğraşırken bu daha belirgindir. Örneğin, uygulama yalnızca XML alan belirli bir servis veri yolunu kullanır.

  3. DİL gereksinimlerini anlamak . Diğerlerinin de belirttiği gibi, bir dilde ne kadar deneyimli olursanız, orijinal kodlayıcının ne elde etmeye çalıştığını o kadar çabuk okuyabilirsiniz. Yine de # 1 ve # 2 olmadan, bu artan yeteneğin oldukça hızlı bir şekilde doruğa ulaştığını göreceksiniz.

Gelişimin birçok yönüne dahil olmaya çalışın çünkü tüm alanları en az birkaç kez gerçekleştirene kadar bu gerçekten kolay olmuyor .

Bir başkasının kodundaki mükemmelliğin (ve amacın) her zaman # 1 ve # 2 ile ilişkili olduğunu unutmayın. Bunlar, kodun içinde bulunduğu durumun başlıca itici güçleridir. Bu iki alanda sık sık yapılan değişiklikler, her zaman spagetti kodu almamızın en büyük nedenidir. Bu nedenle, işletme ve teknik gereklilikleri okuma konusunda usta olmadığınız sürece, okuma kodunun görevi her zaman bir kraliyet PITA'sı olacaktır.


2

Aynı anda daha kolay ve daha karmaşık hale gelir!

Başkalarını tanımak bilgeliktir;
Benliği bilmek aydınlanmadır.
Başkalarına hakim olmak güç gerektirir;
Benliğe hakim olmak güç gerektirir;
Yeterli olduğunu bilen kişi zengindir.
Azim, irade gücünün bir işaretidir.
Dayandığı yerde kalan o.
Ölmek ama yok olmamak sonsuza dek var olmak demektir.

Yazılım Geliştirme'ye tercüme edildi

Birçok teknolojiyi bilmek bilgeliktir. (Her şey ALGOL'den gelmektedir)
Ne bilmediğinizi bilmek aydınlanmadır. (LISP)
Çok fazla dil, çerçeve ve platformda ustalaşmak çok çaba gerektirir. (Java)
Yalnızca bilmeniz gerekenleri ve yalnızca bu gücü gerektiren şeyleri geliştirmek. (ve Google veya stackoverflow.com)
Kodlamayı ne zaman durduracağınızı ve bir şeyi ne zaman yayınlayacağınızı bilmek, yeterince iyi olduğunuz zamandır. (Analiz Paralizi Yok veya Altın Kaplama) Elde
etmeye çalıştığınız şey üzerinde çalışmaya devam edin, odaklanmayı gerektirir ve güç sağlayacaktır. (Her şey sürekli değişir, asla bitmez)
Bir veya iki teknolojiye sahip kalın ve katlanacaksınız. (COBOL, C’de olduğu gibi hala iyi öder)
Programlamayı bırakmak ve yönetime geçmek sonsuza dek var olmaktır. (veya siz öldükten sonra herkesin kullanmaya devam edeceği FOSS yazılımının bir mirasını bırakın).


Öyleyse karınca olmak yerine hamamböceği olmalısın ve seni ezerken ayağa kalkmalısın, değil mi? :-P
Bugster

"Analysis Paralysis"! = "Kodlamanın ne zaman durdurulacağını bilir". Daha fazla "kodlamaya ne zaman başlanacağını bilmek".
Ben Voigt

0

Özet olarak, soru, özetle, eğer bu, kariyerinde ilerledikçe bir programcının netleşmesidir. Yukarıda listelenenlerin (OpenGL, MySQL, gelişmiş html siteleri) daha fazla öğrendikçe okuması, yazması ve anlaması kolaylaştığından karmaşık konular mı, yoksa ilerledikçe daha karmaşık hale mi geliyor? Programlama dünyasında bir karınca olduğun duygusuyla nasıl savaşabilirsin ve bu şey seni ezmek için olan ayaktır?

Diğer katılımcılardan biraz daha farklı bir vuruş yapacağım; Kod yazmanın ve okuduğunuzda, aslında daha çok yaptığınız için daha kolay hale geldiğine inanıyorum ve basit bir benzetmeyle göstereceğim.

Ne zaman spor yapmaya başladığınızı bir düşünün. İlk öğrendiğiniz sporun başında, tek bir sporun basit görevleri için temel koordinasyon çok zor görünüyordu. Biraz daha tecrübe kazandıkça, basit görevlerde uzmanlaşmaya başladınız, böylece onlar hakkında daha fazla düşünmek zorunda kalmadınız ve dikkat etmeniz gereken daha karmaşık görevlerin olduğunu fark ettiniz (tahmin etmek için diğer oyuncuları izlemek gibi) onların davranışları).

Sonra, başka bir sporda elinizi denediğinizde, muhtemelen başladığınızda çok uzakta olmadığınızı fark etmişsinizdir. Bir basketbol oynamak, beyzbol oynamaktan çok farklıdır, ancak bir tanesine hakim olan biri, daha önce hiç yapmadığı bir kişiden diğerini almaktan daha kolay bir zaman alacaktır. Deneyiminizi ikinci spor yapılırken ile, ilk spor size hem verdi keşfetti belirli ve genel beceriler. Belirli beceriler (bir basketbolu yakalamak) yalnızca kendi alanlarında yararlıdır, ancak genel beceriler (üç boyutlu uzayda yaklaşan hızlı hareket eden bir nesneyi izlemek ve bununla başa çıkmak için bir plan geliştirmek), ilgili tüm alanlarda sizi daha iyi hale getirir.


Bunun programlama ile ne alakası var? Okuduğunuz ilk kod satırı sizi belirli kurallara dayanan bir dünyaya sunar. Bu kuralları (o dilin sözdizimi ve deyimleri) belirli beceriler olarak öğrendiniz, ancak bazı değerli genel beceriler de öğrendiniz: bilgisayarların dahili olarak nasıl işlediğini ve niyetlerinizi bir bilgisayarın anlayabileceği şekilde nasıl ifade edeceğinizi anlamak. Öğrendiğiniz her yeni dil size yeni özel beceriler kazandırır, ancak aynı zamanda genel becerilerinizi de güçlendirir ve kanyon duvarı boyunca katmanlı mineral birikintileri gibi tüm bilgisayar dillerinde çizilen kalıpları görmenize yardımcı olur. Birkaç farklı dili gerçekten tanıdıktan sonra, herhangi bir kodun "şeklini" tanımaya başlarsınız, eğer belirsizliği affederseniz, içinde bulunduğu dil hakkında bir şey bilmeseniz bile.

Örneğin, bahsettiğiniz üç dilin de (MYSQL, OpenGL, C ++) bazı ortak özellikleri vardır:

  • Bir algoritmanın küçük parçalarını ayrı ayrı hesaplamak ve daha sonraları tam bir çözümde oluşturmak mümkündür
  • Bilgisayar, genellikle kendi sorununuz üzerinde çalışmaya başlamadan önce bir miktar genel hazırlık gerektirir (bir tablo oluşturmak, bir tuvali başlatmak veya belki de ortak kütüphaneler yüklemek)
  • Daha önceki ifadeler öncelik taşır ve sonraki ifadeleri etkiler; yani, bilgisayar kodun en üstünde başlar ve aşağı doğru ilerler

Ne kadar çok programlama yaparsanız, topun nasıl bir şekilde şekillendirildiğinin önemi yok, o hala sadece size doğru gelen bir top olacak ve onun hakkında çok fazla düşünmek zorunda kalmadan ne yapacağınızı biliyorsunuz. Tüm programlama, niyetlerinizi bilgisayarın anlayabileceği şekilde ifade etmeye çalışmakla ilgilidir; Yeterince öğrenmek ve kod yerine niyetleri okumak mümkün olacak.

PS- Her seferinde, nihayetinde yolunuzu bildiğiniz gibi hissetmeye başladığınızda, beyninizi kesinlikle kıran ve kendinizi bir rütbe acemi gibi hissettiren bir şeye girersiniz. Bu işte sevdiğimiz şey bu, öğrenmek için her zaman yeni bir şeyler var.


0

Kısa Cevap: Evet , genel olarak

Ancak, eğer genellenirseniz uzman olamazsınız. Uzman olmak aynı zamanda bilmediğiniz her şeyi gerçekleştirmek anlamına da gelir: bu çok zor bir duygu olabilir.

Zaman içinde ilerledikçe deneyim kazanırsınız.

Zaman içinde ilerledikçe, diğer diller / modeller vb. Gelişiminize paralel olarak gelişir.

Sorunuza bir diğer değişken, aynı sabit zamanda ilerlerken, sektörle ilgili anlamlı bir deneyim kazanıyor olmanızdır. Teknoloji endüstrisi hareketli bir hedeftir ve diğer çoğu endüstrinin aksine.

İyi bir soru da olabilir: Kendinizi çok ince ya da belirli bir dilde kalın yayarak.


0

Bu, hiç bitmeyen bir şaşkınlık kaynağı (ve endişe), ne kadar bilgisayar dili var ve ne ölçüde değişmeye devam ettikleri. Buna ek olarak, her dilde ve her bir çerçeve için farklı çerçevelerin sayısı, mevcut engin kütüphaneler ve eklentiler dizisi. Buna kod editörleri ve IDE'lerin sayısını ekleyin.

Bu değişikliklerin tümü iki karmaşıklık boyutuna sahiptir.

  1. Kelime hazineleri ve sözdizimleri farklıdır.
  2. Destekledikleri soyutlamalar (üst düzey kavramlar) farklıdır.

Ayrıca ortak bir şeyleri var. Tam bir bütünlük. Bir programcı adına yeterli çabayla, hepsi tüm sorunları çözmek için kullanılabilir! Yani C gibi bir dille başlarsanız (küçük kelime, karmaşık sözdizimi ve neredeyse soyutlama yok) kesinlikle bir şey yapabileceğiniz hissine kapılırsınız (oldukça haklı).

Ardından CSS, HTML, Javascript ve Bootstrap ve React gibi çerçeveler gibi "kolay nesnelere" geçin ve beyniniz kızarır - Albert Einstein'ınki gibi. İnsanlar "Fransızca biliyorum, Almanca öğrenmek kolay olmalı" diye düşünüyorlar. Hayır!

Yazılım kalıplarından birçok programlama soyutlaması öğrenilebilir . Konuya adanmış birkaç kitap var. Desenler her yerde, dille ilgili agnostiktir ve bir kez öğrenilip anlaşılabilir . Kalıplarınızı biliyorsanız, bunları herhangi bir dilde kullanabilir ve dillere yerleştirildiğinde ve daha sık olarak çeşitli çerçevelerde tanıyabilirsiniz.

Çoğu insanın yeni bir dilde akıcı hale gelmesi 1-2 yıl sürer ve işverenler bunu bilir. Bu nedenle, dillerinde deneyimli olmayan insanları işe almazlar, çünkü yeni çalışan, dille güreşmek için çok zaman harcayacak ve aslında işle ilgili sorunları çözmek için yeterince zaman harcamaz.

Özetle, bilgisayar bilimi ilkeleri / soyutlamaları, yazılım kalıpları ve karşılaştığınız iş problemlerinin türü, bunların tümü yavaş yavaş değişir. Bir kez öğrenebilir ve aşamalı olarak yeni bilgiler toplayabilirsiniz. Buna karşılık, bilgisayar dilleri, "ekosistemler" olarak adlandırılan çerçeveler ve bileşen kütüphaneleri, onları çevreleyen tüm araçlar kadar hızlı bir şekilde değişmektedir. İşte öğrenme hızının yavaş ve zaman alıcı olmasını bekliyoruz!


-1

Yukarıda listelenenlerin (OpenGL, MySQL, gelişmiş html siteleri) daha fazla öğrendikçe okuması, yazması ve anlaması kolaylaştığından karmaşık konular mı, yoksa ilerledikçe daha karmaşık hale mi geliyor? Programlama dünyasında bir karınca olduğun duygusuyla nasıl savaşabilirsin ve bu şey seni ezmek için olan ayaktır?

Herhangi bir ilerleme kaydedildiğinde, daha önce bildiklerimizi öğrenip öğrenir ve yeniden öğreniriz. - Henry David Thoreau

Zen ustası ve Taşan Çay Fincanı hikayesi var .

Bazen, önyargılı görüş ve geçmişe dair düşüncelerimizi bırakmamız gerekir, böylece yeni kavramları öğrenmemize izin verebiliriz.

Unutmayın: Yeni bir konsepte boğulmuş hissediyorsanız, birçok öğretmen aramanız gerekir.

Son zamanlarda, bildiğim bir betik dili kullanan bazı şirket içi şirket yazılımlarını güncelleme görevi verildiğinde. Başlangıçta çok stresliydi. Ancak tutumumu değiştirdikten sonra, sözdizimini ve temel kavramları açıklayan kaynakları bulmaya başladım. Projeyi tamamladım ve şimdi bu kodlama dilini daha fazla iş yapmak için araçlarımdan biri olarak kullanıyorum.

Tutumunuz her şeyi değiştirir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.