关于特斯拉,你真的以为它只是一家做电动车的?

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010528586/article/details/54614520

以下都是个人半年前的一些浅见,自从离开北京来到上海之后,比较明确地感受到了氛围的变化,原本的信息渠道封闭了许多,只能从网络上搜集到一些信息。虽然在北京更多地感受到的是一种浮躁的氛围,有个什么乱七八糟的点子就喊着“下一个风口”,满大街的产品们追着喊着那些可笑的“热点”,让人不得不怀疑是否全中国的白痴都汇聚于京城一地;但是上海比较起北京的其嗅觉的迟钝可能更多只是我个人身处的小环境如此,但是确实让我在最近的半年里吸收到的东西变少了很多,但是也才有了这么一个时间去整理一下以前的那些想法。


从最初我最敬爱的龙哥那里开始,从36kr,知乎,官网等等渠道看了,了解了很多关于特斯拉的文章,报道,所有人都在说特斯拉的电动车。

但是特斯拉毕竟是一个新的企业,特斯拉的车在很多细节方面的做工都只能说是差强人意。值得一提的是,这样的细节才是老牌车商和新车商之间最难以跨越的鸿沟,每一个细节的处理方案都是需要点点滴滴的积累才能培养出来的。再加上特斯拉为了扩大电动车市场而公开了自己的专利,很大程度上降低了老牌车场进入电动车领域的难度,那么未来纯电动车大行其道的时候,相信这些老牌车商凭借他们多年的技术积累,可以迅速在高端市场迎头赶超特斯拉。更要死的是,特斯拉不公开专利,吸引更多的厂商一起来做大电动车的市场,那么有着度假技术的特斯拉自己就要死的很有节奏了,具体可以参看 三星通过价格战打开市场,用当时低端的液晶屏来淘汰更先进的等离子屏,把等离子屏挤出市场的案例。

必须要说,汽车这样的行业,从高端市场向低端市场是存在“势能优势”的。而产品在从低端市场走向高端市场的阻力也是无比巨大。当然,像TCL那样弄个镶碎钻,就意味自己是高端手机了的;像秦池那种在央视夺个标王做广告就成为高端了的,这种“高端产品”不在我们讨论的范围内(这种高端也就是在那些没见过什么好东西的地方才会因为没有比较才会有市场)。汽车行业发展了几百年,几大巨头还是那些最老牌的车商。日系的两田发力追赶了那么多年,在上游还是拼不过欧洲的老牌子。

为什么?因为一个品牌和它的受众是紧密联系,互相促进的。以服装为例:买了boss西服的金语俊就是服装提升人在他人心中的社会价值、社会地位的实例;而头条上动不动就出来的彭妈妈穿的衣服的广告则是通过人来提升服装的地位的例子(谁要是跟我提比尔盖茨跟徐翔我就拍死他)。或者说,你用什么档次的东西,别人就会认为你是什么样的人,而你是一个什么样的人,那么就会有该你用的档次的东西。而另一方面,用户群体又更加固化了产品在大众心目中的形象,产品又会主动拒绝那些不符合其定位的人(低端的群体吃不起高端商品的价格,高端人群会挑剔低端商品的瑕疵)。

特斯拉首先还远远不足以立足高端市场。特斯拉虽然早期的车型有着高端车的价格(注意特斯拉在国内是没有价格歧视的,所以如果要和国内的进口汽油车进行横向对比的话,请在特斯拉的售价上乘个2~10不等),而且也确实被部分高社会地位的人所接受,但是,这并不意味着特斯拉就在高端车领域站稳了脚跟。那些购买特斯拉早期车型的人,更多是出于一种对环境问题不满和想要做出改变的愿望而“友情购买”特斯拉。但是这种支持由于特斯拉的生产能力还不能提供配套的“软件”(也就是舒适的车内环境,没有瑕疵的细节),也就是说支持早期的特斯拉的“友情购买”是不可持续的,特斯拉作为起策划行业的新人,马库斯更加只是个工程师的出身,其底蕴积累的不足注定不可能及时满足高端群体的体验需要,所以特斯拉向下游发展,不断扩大生产,降低成本并且推出更低价车型其实是特斯拉唯一的生存之道。高利润的高端产品特斯拉站不住脚,而如果长期只能做低端产品,这种不得不为之的企业生存策略就会因为惯性成为特斯拉的魔咒:首先就是大量普及的低端车给普罗大众留下的第一印象:低端电动车。如果要走向高端车型所必须抬高的价格大众未必乐于买单(不过对此一种常见的策略就是重新塑造一个品牌,这种策略目前国内的步步高先后推出oppo和vivo手机就是一个非常好的成功的例子,当然这种成功借助了步步高手机的生产过程所积累的经验作为基础,更重要的是其扑天盖地的广告宣传,对比其他拼命压缩利润空间的厂商可以说非常发达的线下渠道以及留给各级经销代理极丰厚的利润空间,在最近几年有了非常可观的销售增长。但是这两个品牌是否能够长久保持劲头就要看其他手机厂商有多自负以及多么没有魄力了——瑕疵也许我会写一篇分析手机行业格局的文章,只是个人一年前的一些浅见。另外还有一篇分析产品该怎么从低端走向高端的夸夸其谈。由于本人“懒得出筋”,如果不在这里先夸个海口,只怕以后就懒得动笔了)。就算能够解决群众心中固化的印象的问题,还有工厂里的生产流水线、广告营销都为了走量的低端电动车而设计,要做回高端产品又会需要完全不一样的团队和流程,难度是极其巨大的(90年代有不少企业试图从低端市场进军高端市场,试问当年的企业今天还被熟知的有几家?vivo和oppo都算是手机行业里面“有积累”的品牌了,但是其品质还是不足以支撑其价格)。


但是先把特斯拉目前的不利之处放在一边,我们来看看特斯拉在干什么。首先电动车的市场要做大浅显看来就有极大难题:1、电池续航问题;2、生存问题  3、建立市场问题;3、配套服务设施问题;4、生产汽车的必须零件(主要是电池)问题;5、生产成本问题。

再来看特斯拉如何解决这些问题:

1.电池续航问题。不得不说这是musk的伟大所在。提出了使用多借锂电池组合成电池组来提供汽车的续航的构想,并且将之变为现实。详情可以去看特斯拉电池组的各种专利。解决了这个问题,才有特斯拉。

2.经历了从无到有,首先第一步是要活下来,并且更好地活下来。特斯来在这里其实还是一个利用了从高端走向低端的势能。这与我前面所说的特斯拉在高端站不住脚,不足以立足高端市场是不冲突的。首先,美国是一个注重公德教育的国家,还是一个副哟的国家。根据骂死落魄的5层需求理论,总会有那么一群吃饱了没事干的人要求自我实现。而对环保的公德追求正是这自我实现的一环。特斯拉的电动车打着清洁环保的旗号,能够让这帮人只用付出对于他们而言极小的金钱代价就可以获得我“支持环保”,是个有公德心的人的自我满足感,不得不说对于他们来说买一部特斯拉回来就算当玩具都是相当划算的事情,同时这笔收入也支持特斯拉撑过了早期阶段,形成了一种双赢互惠。当然,此时能够购买特斯拉的人本身也必然是拥有着强大的经济实力与较高社会地位的人。他们有足够的经济实力对汽车挑剔其细节,而初创的特斯拉显然不足以满足他们这一需求。而他们“出于环保的热情而购买特斯拉的欲望”是一种不可再生的资源,不足以支撑特斯拉立足到汽车行业里去。但是,musk明明是个工程师,但他却不仅仅拥有一个工程师的大脑。特斯拉是一个全新的汽车品牌,大众对它一无所知。但是特斯拉利用起了自己的第一批用户:你看,我们的汽车多么时尚高科技,跑的最快最远的电动车哦,环保公益哦,而且最重要的是,XXX这么牛X的人都认可了我们,购买了我们的汽车,现在我们推出更便宜一点,但是性能更好的汽车了,loser你不为了偶像来一辆吗?

特斯拉汽车的销售扩大过程也是一种非常值得我们学习的粉丝经济,为所有成熟市场的新型挑战者指出了一条可行的道路。从少数高端的拥有高支付能力的购买者入手,首先不会给一个初创企业的的生产能力带来难以负荷的压力,同时,可以以汽车较高的单价来维持公司的运转;然后借用首批的购买者的影响力,以较低的推广成本去有限地扩大购买群体,同时也只需要有节制地增加生产线,同时扩大的生产降低了单车成本,使得新车型能够用更低的价格推出,同时又限制住了生产扩大的规模,保证了不给资金链过大的压力;通过这种类似于口碑传播的循环,以及并不激进的扩张,持续平稳地扩大规模以及影响力,达成了活下来,并且活的越来越好的目标。

3.建立市场的问题。市场这东西,并不是天生就有的。尤其是电动车,说是要代替燃油车,更环保,但是反过来说,电动车完全可以被燃油车代替。同时燃油车有着完善的加油站、维修、保险等等配套服务,而电动车在这些方面还很空白。尤其是燃油车2分钟就可以加满油,电动车却要数个小时,充满电能跑里程数也要小于燃油车,都是巨大的先天不足。而特斯拉的做法就是自建充电桩和超级充电站。超级充电站目前半小时内可以完成充电,虽然比起燃油车还是不足,但是已经有了巨大的进步。同时特斯拉公开并且宣布所有其他人都可以永久免费使用自己的专利,降低其他公司的入场成本,引入外部力量来一起扩大市场。

4.电池供应问题。特斯拉,或者说电动车未来快速发展在供应链是压力最大的缓解就在于电池的供应。对此,特斯拉的做法是自建超级电池工厂,这样特斯拉对于电池的供应就有了更高的掌控能力,降低了供应链生产能力不足,供应断裂的风险,不用受制于人。

5.生产成本问题。降低生产成本,其实和建立市场是一个一而二,二而一的问题。扩大规模,可以降低生产成本。而扩大规模,首先第一个问题在于目前电动车市场的规模还是太小,不足以吸引更多的汽车厂商入场,单靠一家特斯拉要形成规模资金还是严重不足。只有大量的汽车厂商加入到这一市场,才能吸引更多的零配件供应商的入场。只有有了更多的零配件供应商,才能充分竞争,提高生产效率,降低成本。


从上面可以看出来,电动车的市场,其实还是一片未开拓的荒芜的土地。而在一片这样荒地上,把需要从整个产业从上游的供应链到下游的售后服务都建立起来的开拓者特斯拉仅仅定位为一个电动车生产公司是相当愚蠢的行为。特斯拉的充电站就是电动车的基础建设,就是电动车的服务缓解中不可缺少却偏偏投入巨大,回收缓慢却可持续、具有排他性,先入者为王的一部分;特斯拉的超级电池工厂就是电动车目前最薄弱也最容易形成垄断的供应链环节。目前特斯拉会继续在电动车上发力,不断探索完善电动车的技术,为后来者铺路;等到电动车市场成熟,相信特斯拉在充电站、电池工厂上的布局也已经完成,未来的特斯拉就可以转型为一家为所有的电动车提供优质可靠的电池、为所有电动车提供充电站的上游以及下游服务+原料供应企业。其地位将可以与90年代的intel+微软比肩。而其中尤其值得注意的是,特斯拉/电动车市场=( intel+微软)/PC市场。而电动车市场的利润恐怕是远远高于PC市场的。

所以,特斯拉绝对不仅仅只是一个电动车制造商,它还是电动车市场的上帝,做为第一个入场披荆斩棘的开拓者,它将会把整个电动车市场的命脉握在自己的左右手里。


我虽然非常看好特斯拉的前景,但是特斯拉的发展过程还是有着很高的风险,目前全靠着musk个人的智慧在风雨中前行(松下最近就减少了和特斯拉合作电池工厂的投入,给了特斯拉的资金链以沉重的一击。尤其让我感到忧虑的是,这种我这样水平的人都能看见的巨大利益,松下能人辈出岂能视而不见?那么或者是musk通过某种手段限制了松下将来收获这股利益,但是我想目前以生存和发展为第一要务的特斯拉的领导者musk不至于如此短视,在自身还很脆弱的时候轻易将自己的合作者推离自己;又或者是musk已经有了通盘的布置,相信失去了松下光靠特斯拉也能开拓市场这样天方夜谭的可能性;比较靠谱的可能有二:一个是松下看到了未来的巨大机遇,想要通过撤回资金给特斯拉以压力来攫取未来更多的利益,二是,松下作为合作者,看到了我们外人所看不到的隐患)。只是此刻,还是一个蹒跚学步的小孩的特斯拉目前的股票市值已经和丰田在一个数量级上,实在让本人对于特斯拉的收益风险比有了就打的忧虑,所以虽然看好特斯拉未来的巨大前景,但是还是希望有识之士能够一起讨论一下,目前的特斯拉是否值得投资呢?


p.s.

顺便讲一个题外话,一个前同事和我讨论特斯拉的时候,提到了一个“电池汽车看起来环保,实际上污染更大”的观点,他认为比起直接烧燃油功能的汽车来,电力汽车还存在一个一级能源转化为电能,再有电网输电、充电、电能转换为机械能的过程,每一个过程中都存在能量的损耗,同时发电厂发电本身也会造成污染;还有废旧电池的处理问题处理不当也是已达污染。

首先电能传输的损耗比起气缸燃油的能量损耗来说还不足以成为问题。电能的转换率是远远高于气缸直接将热能转化为机械能的转化率的。至于发电厂和废旧电池处理的污染问题,或许目前的处理手段还存在不足,但是特斯拉汽车已经在着手处理电池回收,将来的废旧汽车电池必然会统一集中处理;而发电厂比起燃油车,更是先天具有了能够集中处理垃圾的优势;垃圾处理的手段随着技术进步是能够不断优化的,但是回收排放的汽车尾气,除了在每部汽车出气管道上安装集尘管,只怕是永远不解的难题。

展开阅读全文

DispatchMessage函数的以为

05-30

// 523.cpp : Defines the entry point for the application.rn//rnrn#include "stdafx.h"rn#include "resource.h"rnrn#define MAX_LOADSTRING 100rn#define ID_OK 10000rnrn// Global Variables:rnHINSTANCE hInst;rnHWND hwnd; // current instancernTCHAR szTitle[MAX_LOADSTRING]; // The title bar textrnTCHAR szWindowClass[MAX_LOADSTRING]; // The title bar textrnrn// Foward declarations of functions included in this code module:rnATOM MyRegisterClass(HINSTANCE hInstance);rnBOOL InitInstance(HINSTANCE, int);rnLRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);rnLRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);rnrnrnvoid Create()rnrn CreateWindow( rn "BUTTON", // Predefined class; Unicode assumed. rn "OK", // Button text. rn WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles. rn 1, // x position. rn 1, // y position. rn 100, // Button width.rn 100, // Button height.rn hwnd, // Parent window.rn (HMENU)(ID_OK), // No menu.rn NULL, rn NULL); rn CreateWindow( rn "BUTTON", // Predefined class; Unicode assumed. rn "OK", // Button text. rn WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles. rn 100, // x position. rn 100, // y position. rn 100, // Button width.rn 100, // Button height.rn hwnd, // Parent window.rn (HMENU)(ID_OK), // No menu.rn NULL, rn NULL); rn MSG msg;rn while(::GetMessage(&msg,NULL,NULL,NULL))rn rn TranslateMessage(&msg); rn [color=#FF6600] DispatchMessage(&msg); [/color]rnrn rnrnDWORD WINAPI ThreadProc(LPVOID lpParameter)rnrnrnCreate();rnreturn true;rnrnrnrnrnrnint APIENTRY WinMain(HINSTANCE hInstance,rn HINSTANCE hPrevInstance,rn LPSTR lpCmdLine,rn int nCmdShow)rnrn // TODO: Place code here.rn MSG msg;rn HACCEL hAccelTable;rnrn // Initialize global stringsrn LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);rn LoadString(hInstance, IDC_MY523, szWindowClass, MAX_LOADSTRING);rn MyRegisterClass(hInstance);rnrn // Perform application initialization:rn if (!InitInstance (hInstance, nCmdShow)) rn rn return FALSE;rn rnrn hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MY523);rnrn // Main message loop:rn while (GetMessage(&msg, NULL, 0, 0)) rn rn if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) rn rn TranslateMessage(&msg);rn DispatchMessage(&msg);rn rn rnrnrn return msg.wParam;rnrnrnrnrn//rn// FUNCTION: MyRegisterClass()rn//rn// PURPOSE: Registers the window class.rn//rn// COMMENTS:rn//rn// This function and its usage is only necessary if you want this codern// to be compatible with Win32 systems prior to the 'RegisterClassEx'rn// function that was added to Windows 95. It is important to call this functionrn// so that the application will get 'well formed' small icons associatedrn// with it.rn//rnATOM MyRegisterClass(HINSTANCE hInstance)rnrn WNDCLASSEX wcex;rnrn wcex.cbSize = sizeof(WNDCLASSEX); rnrn wcex.style = CS_HREDRAW | CS_VREDRAW;rn wcex.lpfnWndProc = (WNDPROC)WndProc;rn wcex.cbClsExtra = 0;rn wcex.cbWndExtra = 0;rn wcex.hInstance = hInstance;rn wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_MY523);rn wcex.hCursor = LoadCursor(NULL, IDC_ARROW);rn wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);rn wcex.lpszMenuName = (LPCSTR)IDC_MY523;rn wcex.lpszClassName = szWindowClass;rn wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);rnrn return RegisterClassEx(&wcex);rnrnrn//rn// FUNCTION: InitInstance(HANDLE, int)rn//rn// PURPOSE: Saves instance handle and creates main windowrn//rn// COMMENTS:rn//rn// In this function, we save the instance handle in a global variable andrn// create and display the main program window.rn//rnBOOL InitInstance(HINSTANCE hInstance, int nCmdShow)rnrn HWND hWnd;rnrn hInst = hInstance; // Store instance handle in our global variablernrn hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,rn CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);rn hwnd=hWnd;rn if (!hWnd)rn rn return FALSE;rn rnrn ShowWindow(hWnd, nCmdShow);rn UpdateWindow(hWnd);rnrn return TRUE;rnrnrn//rn// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)rn//rn// PURPOSE: Processes messages for the main window.rn//rn// WM_COMMAND - process the application menurn// WM_PAINT - Paint the main windowrn// WM_DESTROY - post a quit message and returnrn//rn//rnLRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)rnrn int wmId, wmEvent;rn PAINTSTRUCT ps;rn HDC hdc;rn TCHAR szHello[MAX_LOADSTRING];rn LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);rnrn switch (message) rn rn case WM_CREATE:rn CreateThread(NULL,0,ThreadProc,NULL,0,NULL);rn break;rn case WM_COMMAND:rn wmId = LOWORD(wParam); rn wmEvent = HIWORD(wParam); rn // Parse the menu selections:rn switch (wmId)rn rn case IDM_ABOUT:rn DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);rn break;rn case IDM_EXIT:rn rn DestroyWindow(hWnd);rn break;rn [color=#FF6600]case ID_OK:[/color] MessageBox(NULL,"","",0);rn break;rn default:rn return DefWindowProc(hWnd, message, wParam, lParam);rn rn break;rn case WM_PAINT:rn hdc = BeginPaint(hWnd, &ps);rn // TODO: Add any drawing code here...rn RECT rt;rn GetClientRect(hWnd, &rt);rn DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);rn EndPaint(hWnd, &ps);rn break;rn case WM_DESTROY:rn PostQuitMessage(0);rn break;rn default:rn return DefWindowProc(hWnd, message, wParam, lParam);rn rn return 0;rnrnrn// Mesage handler for about box.rnLRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)rnrn switch (message)rn rn case WM_INITDIALOG:rn return TRUE;rnrn case WM_COMMAND:rn if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) rn rn EndDialog(hDlg, LOWORD(wParam));rn return TRUE;rn rn break;rn rn return FALSE;rnrn一个奇怪的问题 rn在辅助线程中创建的控件,然后在线程中加入消息循环rn怎么会在主线程也有响应呢rncase ID_OK:rn MessageBox(NULL,"","",0);rn break;rn这部分也会执行,不是各个线程都有自己的消息队列吗 rn如果吧线程消息循环中的rn DispatchMessage(&msg);注释掉的话就不会响应了 论坛

没有更多推荐了,返回首页