Enerji Verimliliği vs Bilgisayar Bilimi: Geliştiricilerin Yaklaşımları Üzerine Etkileri, Stilleri? [kapalı]


11

Yazılım geliştiricileri (sw mühendisleri, mimar, iş unvanı ne olursa olsun) arasında elektronik veya başka bir mühendislik geçmişi olan, bilgisayar bilimi yoluyla mesleğe girenlere kıyasla sistematik farklılıklar var mı?

Elektronik arka planla, bir EE derecesi veya kendi kendini yetiştirmiş bir elektronik tamircilik, diğer mühendis ve deneysel fizikçiler kastediyorum.

Yazılım yapma mesleklerine, flip floplar, tristat tamponları, saat kenarı yükselme süreleri vb.Gibi güçlü bir bilgiden gelip gelmediğini merak ediyorum, genellikle belirli uzmanlıklarda ve eksiklikte problemlere, zihniyetlere veya üstün becerilere farklı bir yaklaşım getiriyor. soyut veri türleri, nesne yönelimi, veritabanı normalizasyonu gibi kavramlarla dolu bilgisayar bilimi türleriyle karşılaştırıldığında, programlama dillerinde "kapanışlardan" bahseden bilgisayar havası türleriyle karşılaştırıldığında - havya kalabalığına çok az mantıklı olan şeyler yeterince programlamayı öğrenir.

Gerçek dünya, eminim, çok çeşitli bireysel istisnalar sunar, ancak çoğunlukla genel farklılıklar olduğunu söyleyebilir misiniz? Bunların işe alımla ilgili sonuçları olur muydu? Herhangi bir farklılığı bilmek, iş arayanların daha uygun bir şey bulmalarına yardımcı olabilir mi? Veya belirli bir iş rolünde uyumsuzluk bulanlara aydınlanma veya pratik önerilerde bulunabiliyor musunuz?

(Btw, hiçbir zaman bilgisayar bilimi dersleri almadım; tam olarak neleri kapsadığına dair izlenim bulanık. Ben bir elektronik / fizik / sanat tipiyim, kendim.)

Yanıtlar:


5

Bir EE minör ve CS majör olan iki grupla akademik olarak çalıştım. Hiçbir zaman EE tarzı ürünler tasarladığım bir iş yapmadım, ancak birçoğunu PLC gibi şeylere sahip şirketler için iş yaptım ve böylece (eğitim geçmişinden) meydana gelen şeyin ne kadar güzel olduğunu anlayabildim . Bu yüzden işyeri davranışı ve özellikleri hakkında% 100 bildiğimi söyleyemem, ancak academicikisi arasındaki farkları bir dereceye kadar tanımlayabilirim .

Enerji Verimliliği uzmanları ayrıntılara odaklanma eğilimindedirler ve tam olarak uygulamayı bilirler. % 100 haritalanabilir değilse, beğenmezler. EE millet, eğer gerekirse gereksiz ayrıntıları kaldırmak için optimize edecek.

SE millet, katmanları ve mantığın bölümlendirilmesini sevme eğilimindedir. SE millet, şişirilmiş projelere aldırmıyor. SE milletvekilleri matematik yönelimlidir. Denklemler ve problemleri örüntü konseptinden nasıl çözecekleri konusunda düşünme eğilimindedirler. Birleştirmeler , veritabanı çalışması gibi bu grup için daha sezgiseldir. Ne kadar ileri giderseniz, Fonksiyonel Programlama gibi şeylerle akıcı olan insanları görme eğiliminiz o kadar artar. Bu bir enerji verimliliği personeli için güvenli bir zemin değildir .

Her iki kişi de Karnaugh haritaları gibi şeyleri biliyor, bu yüzden bu alanlarda çok fazla çakışma var. Mantık azaltma, bu tür şeyler.

Tamam, bu benim öznel cevabım. Umarım yardımcı olur.


Bu cevap bana şu anki projem hakkında bilgi veriyor. Kariyer değiştirmem gerekiyor!
DarenW

1
Fonksiyonel programlama hakkındaki bölüm dışında neredeyse% 100 sizinle aynı fikirdeyim. Örneğin, saf merdiven mantığının neredeyse% 100 bildirim sözdizimi olduğuna inanıyorum. Fonksiyon blok şeması aynı zamanda işlevsel olan EE'ler ile de popülerdir.
Scott Whitlock

@Scott W. ~ 2 düşünce ... ;)sübjektif bir cevap, yanlış olmasına izin verdim ... fonksiyonel mantığa atıfta bulunarak, bu lisp kodu gibi demek istiyorum ((lambda (arg) (+ arg 1)) 5)... gerçekten "benzer" bir şey kullanırlardı ama bir EE ile aynı mantık mı? Benim kişisel deneyimimde değil. Kabul ediyorum, EE'leri tasarlayan birçok profesyonel çipin, tanıdığımların çoğunun daha fazla servis personeli olduğunu bilmiyorum. Ve bir bilgisayar terminaline girdikleri merdiven mantığı, ekranlarında gerçek bir merdivene benziyor. Git şekil.
jcolebrand

1
Sanırım lambdalar, vb. Gibi fonksiyonel yapılar hakkında konuşuyorsunuz ve değişmezlik ve beyan edici sözdizimi gibi fonksiyonel kavramları düşünüyorum. Monads ve benzeri şeylerin oldukça soyut olduğunu kabul ediyorum. EE'lerin normalde böyle şeylerle karşılaşacağını sanmıyorum.
Scott Whitlock

EE'lerin SE milletlerinden daha sık monadlarla karşılaştıklarını düşünüyorum. Haskell , monad'ların I / O blokları, DSP mühendislerinin ekmek ve tereyağı olarak modellenmesine izin veren bir monad uzantısına bile sahiptir .
Aditya

12

Genellemek zorunda kalsaydım, deneyimim şuydu:

  • Mühendisler (ya da sadece enerji verimliliği) "küçüklerin mükemmelliği" için daha iyisini yapma eğilimindedir. Küçük bir programlama görevi göz önüne alındığında, tüm uç durumlar hakkında çok uzun ve zor düşünüyorlar ve çok sağlam bir yazılım parçası oluşturma olasılıkları daha yüksek. Genellikle yukarıdan aşağıya tasarım, hepsi bir arada ön yaklaşımdan kaynaklanır, çünkü donanımda alışkın oldukları şey budur. Genellikle devlet makinelerinin kullanımını içerir, çünkü onları donanım için tasarlamaya alışkındırlar ve "büyük tasarım" yaklaşımına uyarlar. Flip tarafında, ölçeklenebilirlik veya sürdürülebilirlik hakkında çok fazla düşünmüyorlar.

  • Geleneksel geliştiricileriniz büyük karmaşıklığı yönetmede daha iyidir, çünkü eğitim sorunları daha küçük ve daha yönetilebilir bitlere iter. Büyük tasarımdan kaçınmaları ve endişeleri ayırmaları, testler yazmaları ve testleri geçmeleri öğretilir. Genellikle karmaşıklık ve zaman nedeniyle çok az sayıda kaçırılan kenar vakası vardır, ancak bunlar sonunda örtülür. Geliştiriciler, sadece yazılım olduğu ve değiştirilmesi kolay (veya kolay) olmasından yararlanma eğilimindedir. Enerji Verimliliği donanım ile çalışırken, bu avantajı yoktur ve bence geçiş yapmak zaman alır.

Dediğim gibi, bu benim genel deneyimim. Her durumda doğru değil.


İkisi arasındaki kontrast ile güzel cevap. Şimdi, kaç kişinin bunun doğru olduğunu ya da yaklaştığını kabul ederek, yükselişe geçerek görmek için.
DarenW

3

Deneyimlerime göre - EE türleri doğrusal programlar tasarlıyor gibi görünüyor ve CS türlerinin rahat olduğu soyutlama katmanlarını içermiyor.

Kalite farklılıkları veya eksiklikleri hakkında yorum yok.


1

Her ikisi de kemerleri altında birkaç yıllık deneyime sahip olduktan sonra, çoğu insanın üzerinde çalıştığı normal iş veya web uygulamalarında çok fazla fark göreceğinizden şüpheliyim. "Havya kalabalık" için kafa karıştırıcı olarak listelediğiniz her şey normal programlama becerileridir. Özünde kendi sorunuzu cevaplıyorsunuz - programlama geçmişi olmayan biri programlamayı öğrenebilir, ancak yapana kadar bir programcı değildir. Mantıksal ve analitik aklı olan biri, iyi programlamayı öğrenmeyenlerden daha kolay öğrenecektir - bu, kendi kendini yetiştirmiş bir elektronik tamircilik için düşünebileceğim tek avantaj olacaktır.

Bilgisayar Bilimi (Bilgisayar Mühendisliğinin aksine) ağırlıklı olarak matematiktir, çünkü (daha yüksek seviyelerde) fizik gibi diğer çeşitli bilimlerdir - ama çok farklı bir matematik türüdür. Farklı bir bilim yaptıysanız, matematik de yapmış olursunuz ve bu yüzden matematik geçmişi olmayan birinin aksine hızlanmayı mümkün bulmalısınız. Tabii ki, çok az programcının set teorisi, big-O veya başka bir şey hakkında gerçekten bilmesi gerekir - kesinlikle üst düzeyde değildir.


İlginç bir cevap. Elektronik insanların programlama becerisini küçümsemiş olabilirim - deneyimli olanlar kukladan rock yıldızına kadar her yerde olabilir. Enerji Verimliliğin programlamayı profesyonelce yetkin bir seviyeye, saf bir yazılım insanının elektronikleri alabileceğinden daha kolay öğrenebileceğini söyleyebilir misiniz?
DarenW

1

Bir BSEE ile başladım, büyük bir telefon Ar-Ge laboratuvarı için mantık devreleri tasarlamak için çalışmaya başladım ve (bu yaklaşık 40 yıl önce) yaptığım şeylerin çoğunun sonunda bir bilgisayar programı ile yapılabileceğini fark ettim. Bu yüzden geri döndüm ve MSCS derecesi aldım.

Her zaman bilgisayar mimarisi ve donanım düzeyinde neler olduğu ile ilgileniyorum. Kariyerimin çoğu gömülü mikrodenetleyici sistemleri tasarlamak için harcandı, burada donanımda yapılanlar ile bellenimde yapılanlar arasında en iyi uyumu bulmaya çalışıyorum. Ancak, biraz web programlama ve bazı veritabanı tasarımı yaptım.

CS'deki geçmişim olmasaydı, daha soyut kavramları kavramada daha fazla sorun yaşayacağımı düşünüyorum. Birçok farklı derleyici dilinin yanı sıra C, C ++, C #, Pascal, Delphi, Perl, PHP ve bazı Lisp kullandım. Şu anda Ruby ve Python öğrenmeye çalışıyorum. OO tasarımı ile oldukça rahatım. Fonksiyonel programlama Henüz değilim.

Veritabanları için de aynı şey geçerli. Normalleşmeyi anlıyorum. Bazı ezoterik JOIN'larla sorun yaşıyorum ve onlardan kaçınıyorum. Davlumbazın altında neler olup bittiğini anlamadım, bir şeyle gerçekten rahat değilim.

Bilgisayarın programı kafamda nasıl çalıştıracağını "görmek" istiyorum.


1
"Davlumbazın altında neler olup bittiğini anlamadım bir şeyden gerçekten rahat değilim." - bu sorumlu mühendisliğin işaretidir. Size + 1'ledim efendim.
luis.espinal
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.