از تابلوهای مدار تا کد: چگونه یک توسعهدهنده وب Polyglot (و یک مهندس برق) بازی برنامهنویسی من را افزایش داد

اگر تا به حال با یک توسعه دهنده وب چند زبانه ملاقات کرده اید، می دانید که ما نژاد عجیبی هستیم. ما فقط به HTML و جاوا اسکریپت اکتفا نمی کنیم بلکه زبان های برنامه نویسی مانند پوکمون را جمع آوری می کنیم. جاوا؟ متوجه شدم. پایتون؟ چیز مطمئنی زنگ زدگی؟ رنج ببریم و اگر شما هم مانند من پیشینه مهندسی برق دارید، درد اشکال زدایی اتصال کوتاه را خواهید فهمید. و نشت حافظه در همان هفته
نکته اینجاست: مدتی که با خازنها و اسیلوسکوپها دست و پنجه نرم میکردم فقط ساخت مدارها را به من یاد نداد، بلکه حس ششمی را برای کارایی و حل مسئله در توسعه نرمافزار به من داد. پس بیایید به درس هایی بپردازیم که از پرش بین زبان های توسعه دهنده وب و اصول مهندسی آموخته ام.
درس 1: اشکال زدایی اشکال زدایی است، چه مدار باشد چه کد
در روزهای EE من، ساعتها وقت گذاشتم که چرا مدار کار نمیکند. اسپویلر: همین است همیشه یک سیم شل یا یک مقاومت سرخ شده. روند؟ هر قسمت را تست کنید، مشکل را جدا کنید و آن را برطرف کنید.
به سرعت به سمت توسعه وب پیش بروید و اشکال زدایی نیز از همین اصل پیروی می کند. برنامه React شما هنگام بارگذاری صفحه خراب می شود؟ از گزارش خطا شروع کنید، خود را ردیابی کنید state
به روز رسانی، و شاید چند سیلی console.log
اظهاراتی مانند اینکه شما در حال بررسی PCB هستید.
مثال: اشکال زدایی یک مشکل جاوا اسکریپت به طرز عجیبی شبیه اشکال زدایی مدار است:
function add(a, b) {
// What are we even adding here?
console.log("Inputs:", a, b);
return a + b;
}
console.log(add(undefined, 2)); // Outputs: NaN
درست مانند آزمایش ولتاژ در هر گره در مدار، مشکل را یک مرحله در یک زمان جدا می کنید. معلوم می شود شما a
تعریف نشده است، و اکنون شما کل زندگی خود را زیر سوال می برید.
درس 2: کارایی کلید است، مهم نیست رسانه
در مهندسی برق، راندمان همه چیز است. شما نمی توانید فقط قطعات را روی تخته بچسبانید و به بهترین ها امیدوار باشید – یا ذوب می شود یا هزینه زیادی در قبض برق برای شما به همراه خواهد داشت. در برنامه نویسی نیز همین قانون صدق می کند: کدی بنویسید که تمیز، کارآمد باشد و زمانی که کسی آن را روی گوشی خود باز می کند مانند یک مدار ارزان خراب نمی شود.
در اینجا یک مثال سریع است. فرض کنید در حال حلقه زدن روی یک مجموعه داده هستید تا مجموع برخی اعداد را محاسبه کنید. شما می توانید این کار را انجام دهید:
let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
اما اگر یک توسعه دهنده چند زبانه با تجربه هستید، می دانید که همیشه راه بهتری وجود دارد:
const total = numbers.reduce((sum, num) => sum + num, 0);
این نرم افزار معادل بهینه سازی مدار با جایگزینی دسته ای از مقاومت ها با یک آی سی واحد است. تمیزتر، سریع تر، و باعث می شود در بررسی کد باهوش تر به نظر برسید.
درس 3: بدانید چه زمانی از ابزار (یا زبان) مناسب استفاده کنید
مهندسی برق به من آموخت که استفاده از ابزار نادرست برای یک کار فاجعه ای است که در انتظار وقوع است. لحیم کاری را با چکش امتحان کنید، متوجه منظور من خواهید شد. در مورد زبان های برنامه نویسی هم همینطور.
به یک اسکریپت سریع برای خودکار کردن برخی کارهای خسته کننده نیاز دارید؟ پایتون بهترین دوست شماست:
import os
for file in os.listdir("."):
if file.endswith(".txt"):
print(f"Processing {file}")
ساختن یک اپلیکیشن با کارایی بالا؟ زنگ مورد علاقه شماست (اگر آماده رنج بردن هستید):
fn main() {
let nums = vec![1, 2, 3, 4];
let sum: i32 = nums.iter().sum();
println!("Sum is: {}", sum);
}
و اگر فقط یک صفحه وب ساده می خواهید؟ از فکر کردن زیاد دست بردارید – PHP را بگیرید:
echo "Hello, World!";
?>
مهندسان برق یاد می گیرند که به ابزارها و قطعاتی که در اختیار دارند احترام بگذارند. من به عنوان یک توسعه دهنده، احترام مشابهی را برای زبان های برنامه نویسی یاد گرفته ام. همه آنها نقاط قوت و ضعف خود را دارند – با آن مبارزه نکنید.
درس 4: محدودیت ها خلاقیت را جرقه می زنند
در سخت افزار، شما همیشه تحت محدودیت کار می کنید. ولتاژ محدود جریان محدود فضای محدود روی تخته نان شما. این محدودیت ها شما را مجبور می کند که خلاقانه فکر کنید، و این در مورد نرم افزار نیز صدق می کند.
آیا تا به حال مجبور شده اید یک وب سایت سریع برای مشتری بسازید که از پرداخت هزینه برای میزبانی خوب خودداری می کند؟ آن وقت است که محدودیت ها را به یک ابرقدرت تبدیل می کنید. به عنوان مثال:
- از HTML و CSS ساده برای صفحات استاتیک به جای بارگذاری بیش از حد با React استفاده کنید.
- بهینه سازی تصاویر به صورت دستی تنبل نیست
npm
دانلودهای بسته - جاوا اسکریپت را طوری بنویسید که برای شما هزینه برق دارد:
const optimizedFunction = (arr) => arr.filter(x => x > 0).map(x => x * 2);
این مانند طراحی یک مدار کم مصرف است – کرک های غیر ضروری را بردارید و به اصل مطلب برسید.
درس 5: سیستم ها برای پیروزی فکر می کنند
مهندسان برق برای تفکر در سیستم ها آموزش دیده اند. مدار فقط مقاومت ها و خازن ها نیست، بلکه نحوه کار همه چیز با هم است. به طور مشابه، در توسعه وب، یک برنامه فقط اجزای React و یک API پشتیبان نیست، بلکه اکوسیستم است.
در اینجا مثالی از “تفکر سیستمی” در یک برنامه فول استک آورده شده است:
- Frontend: یک جزء React برای ورودی کاربر.
- Backend: یک Node.js API که ورودی را پردازش می کند.
- پایگاه داده: یک جدول PostgreSQL برای ذخیره نتایج.
- ادغام: همه چیز با نقاط پایانی REST گره خورده است.
درک تصویر بزرگ، اشکال زدایی را آسان تر می کند و به شما کمک می کند راه حل های بهتری طراحی کنید. مثل این است که به جای خیره شدن به یک ترانزیستور، کل نمودار مدار را بدانید.
افکار نهایی: از لحیم کاری تا نرم افزار
یک توسعه دهنده وب چند زبانه بودن با سابقه مهندسی برق گاهی اوقات شبیه به تقلب است. نظم و انضباط، مهارت های حل مسئله، و وسواس کارایی که از EE به دست آوردم، کاملاً به توسعه نرم افزار تبدیل می شود. مطمئناً، من اسیلوسکوپ خود را با یک دیباگر معامله کرده ام، اما طرز فکر یکسان است.
بنابراین دفعه بعد که فریمورک فانتزی شما خراب می شود یا کد شما کامپایل نمی شود، فقط به یاد داشته باشید: جایی در آنجا، یک مهندس برق در ساعت 3 صبح سخت افزار و نرم افزار را اشکال زدایی می کند، و متعجب است که چرا شغل ساده تری را انتخاب نکرده اند.
به یادگیری ادامه دهید. به اشکال زدایی ادامه دهید. و همیشه به کد (و مدارها) احترام بگذارید.